每次我尝试制作时mysqldump
都会出现以下错误:
$> mysqldump --single-transaction --host host -u user -p db > db.sql
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM,
'$."number-of-buckets-specified"') FROM
information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'db' AND
TABLE_NAME = 'Absence';':
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
结果是一个不完整的转储。奇怪的是,从另一台主机执行的相同命令可以正常工作而不会引发任何错误。有人遇到过同样的问题吗?
我正在使用 mysql-client8.0
并尝试访问 mysql5-7
服务器 - 也许这就是原因?
这是由于在
mysqldump
8中默认启用了一个新标志。您可以通过添加来禁用它--column-statistics=0
。该命令将类似于:检查此链接以获取更多信息。要默认禁用列统计,您可以添加
到 MySQL 配置文件,转到
/etc/my.cnf
、~/.my.cnf
或直接到/etc/mysql/mysql.cnf
.对于使用 MySQL Workbench 的用户,Data Export 屏幕上有一个“Advanced Options”按钮。可以通过设置为 0 禁用“使用列统计信息”选项。
我尚未确认,但建议以下信息也是正确的:在版本 8.0.14 中它丢失了。在版本 8.0.16 中,它默认执行此操作。
我花了一整天的时间寻找解决方案,并在这里注册只是为了分享我的。
是的,这个错误是由于版本差异造成的。
只需从此处下载MySQL 5.7 ZIP 存档: https ://dev.mysql.com/downloads/mysql/并解压缩,然后从那里使用 mysqldump.exe 文件。
如果您使用的是 MySQL Workbench,则需要通过转到Edit -> Preferences -> Administration(从左侧窗格)设置下载的 mysqldump 工具的路径。
希望这可以帮助。
我知道我参加聚会迟到了,但这让我发疯了。如果您想使用最新的 MySQL Workbench(尝试使用最新的 MySQL Workbench 8.0.20),您可以修补此文件:
在 macOS 中: (
/Applications/MySQLWorkbench.app/Contents/Resources/plugins/wb_admin_export_options.py
) 替换此行:有了这个:
然后删除 .pyo:
rm /Applications/MySQLWorkbench.app/Contents/Resources/plugins/wb_admin_export_options.pyo
最后,再次重新加载Workbench 并在 Data Export 页面中,单击“Advanced options...”,您将再次看到 column-statistics 选项(设置 0 为禁用并单击 Return 按钮)
注意:您可以从此 Gist 下载修补文件。
最简单的工作
使用Mysql Workbench 8.0时
祝你好运!
为了使这个答案更容易,您可以 rename
mysqldump
,在其位置创建一个 shell 脚本并mysqldump
使用--column-statistics=0
参数调用重命名。例如:重命名 mysqldump:
将以下 shell 脚本保存在其位置:
我在 OSX(11.1)上使用最新的 mysql 工作台(8.0.23)和 mariadb 时遇到了这个问题。我通过选择 mariadb 包中的 mysqldump 版本解决了这个问题。
/usr/local/mariadb/mariadb-10.1.37-osx10.13-x86_64/bin/mysqldump
除了 pierlo https://serverfault.com/a/919403/586669
在 MySQL Workbench 中有一个选项可以设置 mysqldump 可执行文件的路径。(编辑 - 首选项 - 管理)
因此,您可以创建一个 .cmd(在 Windows 上)或一个 .sh 文件(在 Linux 或 mac 上),如下所示:
mysqldump_nostatistics.cmd:
mysqldump_nostatistics.sh:
注意参数的顺序(它与 pierlo 的不同):执行的转储命令包括(或可能包括)一个
--defaults-file=
选项,这必须是第一个参数。还需要关闭回显,否则工作台无法正确解析命令输出。
我使用 XAMPP,而 MySQL Workbench 确实会警告版本不匹配。我将 MySQL Workbench 设置为指向 XAMPP 的 mysql.exe 和 mysqldump.exe。
转到编辑 -> 首选项 -> 管理并为每个设置路径。
这至少适用于版本 8.0.14。因此,对于其他人,您可能希望避免使用 mysql 和 mysqldump 的捆绑版本。
对于 macOS,您需要旧版本 (8.0.13) 才能看到“列统计信息”,因为我测试了 8.0.14 和 8.0.15 版本,并且都没有显示“列统计信息”。
因此,要调整“列统计”,请使用版本 8.0.13 https://downloads.mysql.com/archives/get/file/mysql-workbench-community-8.0.13-macos-x86_64.dmg