mysqldump --hex-blob 也可以将 DEFAULT 值转储为十六进制吗?

Can mysqldump --hex-blob also dump DEFAULT values as hex?

我们对 Shopware 6 数据库进行数据库转储。系统将 UUID 存储在二进制 (16) 字段中。

现在当使用 --hex-blob 选项转储数据库时,数据列被正确地写为十六进制 (0x12345....) 但我们看到默认值仍然是二进制数据(参见 cms_page_version_id )

CREATE TABLE `category` (
  `id` binary(16) NOT NULL,
  `version_id` binary(16) NOT NULL,
  `auto_increment` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` binary(16) DEFAULT NULL,
  `parent_version_id` binary(16) DEFAULT NULL,
  `media_id` binary(16) DEFAULT NULL,
  `cms_page_id` binary(16) DEFAULT NULL,
  `cms_page_version_id` binary(16) NOT NULL DEFAULT '^O©^\ãéjK¾KÙÎu,4%',
  `product_stream_id` binary(16) DEFAULT NULL,

我们使用这个版本:

$ mysqldump --version
mysqldump  Ver 10.19 Distrib 10.3.31-MariaDB, for debian-linux-gnu (x86_64)

mysqldump 是否有导出默认为十六进制的选项?

如果我们编辑转储并用 vi 保存它,二进制数据会被打乱。

mysqldump 没有这样的选项。 --hex-blob 选项仅适用于数据值。

Mysqldump 使用 SHOW CREATE TABLE 获取 CREATE TABLE 语句,这又依赖于 INFORMATION_SCHEMA.

2013 年报告了一个错误,如果值是二进制的并且包含不可打印的字符,则实际上无法通过此方法获取列 DEFAULT 值。 https://bugs.mysql.com/bug.php?id=71172

错误报告已确认,但目前尚未修复。随时使用“影响我”按钮为错误投票。

或者尝试让 MariaDB 自己修复它,而不是上游 MySQL 代码。