2016-08-04 14 views
0

ich eine Tabelle in MySQL alsMySQL-Bit-Werte exportieren DML Ausgabe

create table bittest (id int(11),constant bit(1) default b'0'); 

Dann erhalten gedruckt

insert into bittest(id) values (1); 

Auswahlabfrage als

+------+----------+ 
| id | constant | 
+------+----------+ 
| 1 |   | 
+------+----------+ 
1 row in set (0.00 sec) 

Offensichtlich Wert der Konstanten geschaffen haben, ist nicht als Bit angezeigt.

Und wenn ich den Export mit mysqldump INSERT-Anweisung tun wird als

exportiert
INSERT INTO `bittest2` VALUES (1,'\0'); 

, die Probleme verursacht, als ich keine Nullwerte eingefügt wollen.

Gibt es dafür eine Arbeit? MySQL Version 5.7.13

+0

Mögliches Duplikat [Kann nicht Feldwert siehe MySQL BIT, wenn SELECT mit] (http://stackoverflow.com/questions/14248554/cant-see-mysql-bit-field- value-when-using-select) – Solarflare

+0

Die Frage ist ähnlich, aber das löst das Exportproblem nicht. – rohitpal

+1

'\ 0' ist nicht' null'. Ich bin nicht sicher, warum die verknüpfte Frage Ihre Frage nicht beantwortet, aber 'b'0' ist das gleiche wie' \ 0' (alle Bits in '\ 0' sind 0, es sind einfach nicht 8 Bits wie gewöhnlich Denken Sie daran, wenn Sie '\ 0' sehen. Ein Bit ist keine Ganzzahl, und wenn Sie es (mit Ihrer 'Einfügung') erneut importieren, funktioniert es gut.Es würde tatsächlich auch mit 0 funktionieren, weil es es richtig umwandeln wird, aber Bits sind einfach keine ganzen Zahlen. Wenn Sie eine ganze Zahl haben wollen, verwenden Sie eine, z.B. 'Tinyint (1)', oder sein Synonym 'bool'. (mysql verwendete früher "tinyint" für "bit" einige Versionen, änderte es jedoch, um mehr standardkonform zu sein). – Solarflare

Antwort

1

Es funktioniert gut für mich am 5.7.13. Sie verwechseln die Ausgabe eines Bitwerts von 0 für etwas, das der Bildschirm in Befehlszeilentools anzeigen kann.

Es exportiert gut, es importiert fein. Und diese Abfrage zeigt Zeile 1:

select * from bittest where constant=b'0'; 

Unabhängig davon, ob Sie eine bitwert von 0 erwarten menschliche lesbar auf dem Display zu sein.

Exportiert mit:

mysqldump -u UserName -p so_gibberish > c:\nate\bittest.sql 

Es gibt einfach kein Problem hier zu lösen.

mysqldump:

enter image description here

0

Sie können mit mysqldumphex-blob Option verwenden.

mysqldump -u[user-name] -p [db-name] [table-name] --hex-blob > [file-name].sql

Dann folgt die SQL-Datei zeigt Werte.

  • b'0' zu 0x00
  • b'1' zu 0x01

Und Sie können die Dump-Datei korrekt importiert.

Mehr Info: Does mysqldump handle binary data reliably?