mysqldump抛出:information_schema中的未知表'COLUMN_STATISTICS'(1109)


117

每次我尝试使a时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-client 8.0并尝试访问mysql 5-7服务器-也许那是原因?

Answers:


168

这是由于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。


--databases <数据库名称>用于特定数据库
Mohhamad Hasham

@forthrin答案已编辑,以显示如何使更改永久生效。
安德鲁·舒尔曼

2
MySQL Workbench中还有一个设置:在“高级选项...”下的“其他”部分中,有一个列统计信息被设置为“ TRUE”。建议将此值更改为零以禁用它。
亚历克斯·巴克

6
MySQLWorkbench v8.0.14没有该设置。我所做的(在Mac上)是下载旧版本的MySQLWorkbench,打开该程序包(显示程序包内容),然后取出其捆绑版本的“ mysqldump”。然后,我编辑了MySQLWorkbench首选项,以查看此版本的“ mysqldump”而不是它自己的版本。导出工作很好,无需设置任何标志。ref)bugs.mysql.com/bug.php?id=91640#c484427
Scott

1
对于使用DataGrip的任何人,您都可以右键单击“数据库”窗口中的架构,转到“使用'mysqldump'进行转储”,然后--column-statistics=0在弹出窗口底部的框中将参数添加到生成的参数列表中。
Travesty3

27

对于使用MySQL Workbench的用户,“数据导出”屏幕上有一个“高级选项”按钮。可以通过设置为0来禁用选项“使用列统计信息”。

我尚未确认,但建议以下信息也正确:在8.0.14版中,该信息丢失。在8.0.16版中,默认情况下是这样做的。


7
只有MySQL Workbench 8.0.13及更高版本具有此选项才能禁用“使用列统计信息”。
邓小平

7
MySQL Workbench版本8.0.14没有此选项。好像他们把它拿出来了。
院长或


仍然在8.0.16
Amir Bar

我可以确认MySQLWorkbench v8.0.17已解决该问题(MacOs)。它在MySQLWorkbench v8.0.12上引发并升级了此错误。我注意到它不再警告我有关从5.X DB导出数据的问题,而是自动--column-statistics=0在export命令中附加了。
Elte156

20

我整天都在寻找解决方案,并在这里唱歌只是为了分享我的。

是的,此错误可能是由于版本差异引起的。

只需从此处下载MySQL 5.7 ZIP存档https : //dev.mysql.com/downloads/mysql/并解压缩,然后从那里使用mysqldump.exe文件。

如果您使用的是MySQL Workbench,则需要通过转到“ 编辑”->“首选项”->“管理”(在左侧窗格中)设置下载的mysqldump工具的路径。

希望这可以帮助。


3
对于Windows用户,此.exe位于:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
Jason

1
MySQLWorkbench v8.0.16仍然缺少设置列统计标志的选项。该解决方案可以说是最好的答案,因为它可以在将来出现问题时正确匹配MySQL版本。
Kiksy

5

为了使这个答案更容易,您可以重命名mysqldump,在其位置放置一个shell脚本,然后mysqldump使用--column-statistics=0参数调用重命名的脚本。例如:

重命名mysqldump:

mv /usr/local/bin/mysqldump /usr/local/bin/_mysqldump

将以下shell脚本保存在其位置:

#!/bin/sh

_mysqldump --column-statistics=0 $@

1
这是一个很好的建议,可在MacOSX中与Mysql Workbench一起使用,但是您必须包括真实mysqldump可执行文件的完整路径,否则它似乎无法正常工作。我尝试了./,但还是行不通。放入完整路径后,Workbench可以在不标记统计信息的情况下运行它。
安迪D

4

最简单的解决方法

使用Mysql Workbench 8.0时

  • 打开“数据导出”选项卡
  • 单击高级选项 在此处输入图片说明
  • 在其他标题下,将列统计信息设置为0 在此处输入图片说明
  • 再次导出在此处输入图片说明

祝你好运!


5
我在“其他”部分中没有此选项
JoRouss

@JoRouss下载8.0.13 downloads.mysql.com/archives/workbench也许.16版本会再次使用它!Otherway我们使用命令行:-)
弗朗索瓦·布雷顿

我最终使用@DodiX建议。感谢@Francois!
JoRouss

直到8.0.16为止都是愚蠢的解决方法:在“高级”选项中,选中“ force”,这样该错误将被忽略。当然,这将忽略任何其他错误
波士顿

@Bostone,此解决方案不会忽略该错误。
卡斯珀


0

在我的情况下,我正在使用mac-OS。顺便说一下,文件中的[mysqldump] column-statistics=0字段位于目录下。删除该字段可解决此问题。(不是:mysql版本是5.7,可通过自制程序安装)。my.cnf/usr/local/etc


0

我也遇到了同样的问题,当我将多个数据表从其他架构合并到现有架构并将合并的数据导出到自包含脚本文件时,就会发生该问题。我确实尝试更改了column-statistics = 0,但是结果如下:

C:\xampp\mysql\bin>mysqldump --column-statistics=0 --host=loalhost --user root --passwod
mysqldump: unknown variable 'column-statistics=0'

所以我没有帮助。我分析了MySQL日志,发现

2019-01-21 11:31:30 1050 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2019-01-21 11:31:30 4176 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

它抱怨innodb_buffer_pool_size的大小。我确实做到了24MB。然后就可以了。


0

我使用XAMPP,MySQL Workbench确实警告版本不匹配。我将MySQL Workbench设置为指向XAMPP的mysql.exe和mysqldump.exe。

转到编辑->首选项->管理,并设置每个路径。

至少适用于8.0.14版。因此,对于其他人,您可能要避免使用mysql和mysqldump的捆绑版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.