1

我在 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 INTO `bittest2` VALUES (1,'\0');

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

有解决办法吗?MySQL 版本 5.7.13

4

2 回答 2

3

您可以将hex-blob选项与mysqldump.

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

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

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

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

更多信息:mysqldump 是否可靠地处理二进制数据?

于 2017-05-19T04:57:06.803 回答
1

它在 5.7.13 上对我来说很好。您将位值 0 的输出误认为是命令行工具中的屏幕可以显示的内容。

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

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

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

出口:

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

这里根本没有问题要解决。

mysql转储:

在此处输入图像描述

于 2016-08-05T03:48:38.227 回答