每次我尝试制作时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
服务器 - 也许这就是原因?
答案1
这是由于在mysqldump
8。您可以通过添加来禁用它--column-statistics=0
。命令如下:
mysqldump --column-statistics=0 --host=<server> --user=<user> --password=<password>
查看此链接了解更多信息。要默认禁用列统计信息,您可以添加
[mysqldump]
column-statistics=0
到 MySQL 配置文件,转到/etc/my.cnf
、~/.my.cnf
或直接转到/etc/mysql/mysql.cnf
。
答案2
对于使用 MySQL Workbench 的用户,数据导出屏幕上有一个“高级选项”按钮。可以通过将“使用列统计信息”选项设置为 0 来禁用该选项。
我没有确认,但以下信息也被认为是正确的:在版本 8.0.14 中它缺失了。在版本 8.0.16 中它默认这样做。
答案3
我花了一整天时间寻找解决方案,并在这里注册只是为了分享我的解决方案。
是的,这个错误是由于版本差异造成的。
只需下载MySQL 5.7 ZIP 存档从这里:https://dev.mysql.com/downloads/mysql/并解压缩,然后使用其中的 mysqldump.exe 文件。
如果你正在使用 MySQL Workbench,则需要通过以下方式设置下载的 mysqldump 工具的路径:编辑 -> 偏好设置 -> 管理(从左侧窗格)。
希望这可以帮助。