无法从MySQL Workbench导出我的数据库

66

我正在尝试从MySQL Workbench导出我的数据库,但在导出过程中出现了以下错误:

运行中:mysqldump.exe --defaults-file="c:\users\user\appdata\local\temp\tmp2h91wa.cnf" --user=root --host=localhost --protocol=tcp --port=3306 --default-character-set=utf8 --skip-triggers "mydb" mysqldump: 在information_schema中未知表'column_statistics'(1109),查询为
SELECT COLUMN_NAME,
JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')
FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'mydb' AND TABLE_NAME = 'courses';'

操作失败,退出码为2。20:55:09 导出C:\Users\user\Documents\dumps\mydb.sql时发生1个错误。


3
这似乎是新版本的MySQL Workbench(8.x)尝试从早期版本的MySQL数据库(5.x)导出时出现的问题。我遇到了相同的问题,在MySQL Workbench工具中找不到解决方法。在GUI中似乎没有设置column_statistics为0的选项。 https://bugs.mysql.com/bug.php?id=89825。 - Travelling Steve
这个 bug 似乎在 Workbench 8.0.20 中已经解决了,至少我在 Ubuntu 20.04 上更新 Workbench 后,错误消失了。 - jockef
我在8.0.26版本中仍然存在问题。 - Amygdala
在Ubuntu 20.04上,8.0.28版本也存在同样的问题。 - Peter
16个回答

66

总结一下我从@JustinLaureno@Mohd.Shaizad的有用评论中所做的事情,经过在MySQL Workbench 8.0.18上的测试:

  • 导航到C:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules
  • 编辑文件wb_admin_export.py(需要管理员权限)
  • 修改以下行:
skip_column_statistics = True if get_mysqldump_version() > Version(8, 0, 2) and self.owner.ctrl_be.target_version < Version(8, 0, 0) else False
  • 目标:
skip_column_statistics = True
  • 不要添加行内注释,否则它将无法工作!
 skip_column_statistics = True # This won't work
  • 重新启动MySQL Workbench
  • 执行导出操作

1
我的MySQL Workbench 8.0 CE没有skip_column_statistics,请问该怎么办? - draw134
太好了,现在我们如何在Mac上做到这一点?我们在哪里可以找到那个文件......有人知道吗? - Christopher Smit
使用Windows上的Workbench版本8.0.23解决了我的问题。 - Michael Staples
对我来说有效。 我正在使用带有Ubuntu 20.04的MySQL Workbench 8.0.26。 目标数据库MySQL版本为10.1.48。 - M.Siri
这对我有用,但原因不同 - 添加路径也起作用,但是我遇到了一个关于变量tz = utc的错误,我无法解决。我切换到工作台中的默认mysqld.exe并进行了配置更改,现在不再出现此错误。 - ChumKui

55

我也遇到了这个问题。 决定按照以下方法进行操作: 在Workbench菜单中,进入:

Edit - Preferences - Administration

在字段“Path to mysqldump Tool”中,指定到mysqldump.exe 的路径,我的情况下是“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe”,点击 OK。

之后,该错误不再出现。


4
根据弹出警告中新增的指示,现在这个答案是正确的,因为它符合MySQL Workbench 8.0.13中新增的导出功能的要求。 - rooby
1
对我来说,这个文件在'C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe'。然而,这并没有解决我的错误。 - Jeremy Taylor
这对我修复了错误,路径是您安装“mysql/bin/mysqldump.exe”的位置。 - bvk
超棒的解决方案 - Veerendar Chary Munigadapa
C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe 对我没用。在 @JeremyTaylor 找到了解决方案。 - Shaho

48

在MySql Workbench版本8.0.13中执行以下步骤:

  1. 进入管理/数据导出
  2. 选择要导出的模式(位于“要导出的表”列表中)
  3. 点击“高级选项…”按钮(右上方)
  4. 搜索“其他/列统计”选项
  5. 将值设置为0
  6. 点击“返回”按钮(右上方)

现在应该可以工作了。不幸的是,每次启动MySql Workbench都需要执行这些步骤。


19
我的工作台没有这个选项,可能是因为它所在的生产数据库是5.x版本,而我正在使用8.x版本。是否有一种方法可以在mysqldump.exe 8.x和MySQL Server 5.x之间激活类似兼容模式的东西? - Douglas Ferreira
3
在最新版本中似乎没有这个选项。ThatGuyRob提到的错误跟踪问题显示他们添加了一个弹出式警告,其中包含如何修复它的说明,这在Artem的回答中有描述。 - rooby
2
正如在这个MySQL bug报告中所解释的那样,WorkBench 8.0.14和8.0.15的这个问题将在版本8.0.16中得到修复。 - Veve
1
正如@Veve所描述的那样,这是一个不固定的问题,在Mac上我的解决方案是将WorkBench降级到版本v.6.3.10,它可以正常工作,希望这可以帮助。 - hermeslm
1
这是另一种解决方法,如果您没有看到“其他/列统计信息”菜单项:https://dev59.com/f1UK5IYBdhLWcg3wlQsJ#55121256 - NMrt
显示剩余2条评论

36
由于mysqldump 8中默认启用了一个标志,因此会出现这种情况。可以通过添加 --column-statistics=0 来禁用该标志。
语法:
mysqldump --column-statistics=0 --host=<server> --user <user> --password <securepass> 

更多信息请访问此链接

要禁用默认的列统计信息,您可以添加:

[mysqldump]
column-statistics=0

将配置信息添加到MySQL配置文件中,例如/etc/my.cnf~/.my.cnf


1
救命稻草!谢谢 :) - Alex Morris
1
当您使用mysqldump备份数据库时出现错误时,这是更好的解决方案。 - Tuhin

16

仍然存在于Workbench 8.0.16的漏洞。

修复方法:

您可以在工作台程序目录下的模块中编辑wb_admin_export.py。搜索“skip_column_statistics = True”(您会找到一个条件语句,不用担心),注释掉该行并添加一行“skip_column_statistics = True”(不带条件语句)。

现在将始终添加所需的参数。


这在8.0.22版本中对我有效,但非常令人惊讶的是,它只在我编辑现有行本身时才起作用。当我复制并编辑副本(将原始副本注释)时,Workbench在导航器(左侧边栏)中没有显示任何内容。奇怪的行为,除了编辑原始行之外,没有任何帮助。我怀疑Workbench会解析自己的.py文件,因此当它以意外的方式发现其变量时,即使在注释中也会出现错误。 - TXN

11

五分钟前我也遇到了同样的问题。

我通过在mysqldump命令中添加--column-statistics=0来解决这个问题。你也可以这样做,它应该能够起作用。

在我的情况下,这是一个phing任务,但你应该明白我的意思。

输入图片描述


10

我也遇到了同样的问题.. 我通过在MySQL Workbench数据导出高级选项中禁用列统计信息来解决了此问题。

1: 单击高级选项: 图片描述

2: 在其他部分的列统计信息中,删除TRUE并将其设置为0以禁用它。 图片描述

现在返回并导出数据。 谢谢


8
我在 wb_admin_export.py 中发现了这个条件,而不是一个被注释掉的 --column-statistics=0。你可以移除 else False 这个条件,或者将其改为 else True
skip_column_statistics = True if get_mysqldump_version() > Version(8,
0, 2) and self.owner.ctrl_be.target_version < Version(8, 0, 0) else
True

7

我曾经遇到过同样的问题,我是这样解决的:

编辑工作台首选项: 编辑 -> 首选项 -> 管理

在属性“Path to mysqldump Tool”中输入mysqldump.exe的路径 通常可以在“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe”找到。


4

Mysql-workbench 版本 8.0.14 开始,您将无法禁用 column-statistics 选项。

但是您可以通过 启用 delete-master-logs: Mysql-workbench 版本 8.0.22来实现它。

  • --delete-master-logs 具有与 "RESET MASTER" SQL 命令相同的效果
  • RESET MASTER 删除索引文件中列出的所有二进制日志文件,重置二进制日志索引文件为空,并创建一个新的二进制日志文件。此语句仅在首次启动主服务器时使用。

运行中:mysqldump --defaults-file="/tmp/tmp5c5ww33n/extraparams.cnf" --host=x.x.x.x --port=3307 --default-character-set=utf8 --user=admin --protocol=tcp --delete-master-logs=TRUE --skip-triggers "fedena" mysqldump: 无法执行 'SELECT COLUMN_NAME, .................. 操作失败,退出码为2 导出 b'/home/sanaulla/dumps/Dump20210331.sql' 已完成,有1个错误。 - Sanaulla
这个帮了我。谢谢。 - Archulan Rajakumaran
这对我没有用,因为我的用户没有正确的权限。不过,还是值得一试的。 - Joachim Rives

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接