MySQL位值导出DML问题

时间:2016-08-04 07:01:08

标签: mysql mysql-5.7

我在MySQL中创建了一个表

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

然后,

insert into bittest(id) values (1);

选择查询打印为

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

显然,常量值不会显示为位。

当我使用mysqldump导出时,insert语句将导出为

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

导致问题,因为我不想插入空值。

有解决方法吗? MySQL版本5.7.13

2 个答案:

答案 0 :(得分:1)

5.7.13对我的工作正常。您错误地将bitvalue为0的输出视为命令行工具中的屏幕可以显示的内容。

它出口很好,进口很好。此查询显示第1行:

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

无论您是否期望显示器上的人类可读取0的位值。

导出:

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

这里没有问题可以解决。

mysqldump的:

enter image description here

答案 1 :(得分:0)

您可以将hex-blob选项与mysqldump一起使用。

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

然后,sql文件显示以下值。

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

您可以正确导入转储文件。

更多信息:Does mysqldump handle binary data reliably?