如何永久禁用MySQL 8中的列统计?

时间:2018-07-31 13:07:02

标签: mysql mysql-workbench mysql-8.0

MySQL 8 起,column-statistics标志已默认启用。

因此,如果尝试使用 MySQL Workbench 8.0.12转储某些表,则会收到以下错误消息:

  

14:50:22转储db(table_name)   运行:mysqldump.exe --defaults-file =“ c:\ users \ username \ appdata \ local \ temp \ tmpvu0mxn.cnf” --user = db_user --host = db_host --protocol = tcp --port = 1337- -default-character-set = utf8 --skip-triggers“ db_name”“ table_name”   mysqldump:无法执行“ SELECT COLUMN_NAME,JSON_EXTRACT(HISTOGRAM,'$。“指定的桶数”“)FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME ='db_name'AND TABLE_NAME ='table_name';':未知表' information_schema(1109)中的“ COLUMN_STATISTICS”

     

操作失败,退出代码为2   14:50:24 C:\ path \ to \ my \ dump的导出已完成,出现1个错误

MySQL(Workbench)8中有什么方法可以永久禁用column-statistics


解决方法1

一个烦人的解决方法是通过以下方式手动完成:

mysqldump --column-statistics=0 --host=...

解决方法2

  1. 重命名mysqldump
  2. 创建 shell脚本(或Windows上的批处理)
  3. 在此脚本中使用--column-statistics=0参数调用重命名的mysqldump
  4. 将其另存为mysqldump

解决方法3

  1. 下载 MySQL 5.7
  2. 提取mysqldump
  3. 使用此mysqldump

例如在MySQL Workbench中:编辑/首选项... /管理/ mysqldump工具的路径


谢谢!

10 个答案:

答案 0 :(得分:11)

最简单的解决方法

使用 Mysql Workbench 8.0

  • 打开“数据导出”标签
  • 点击高级选项enter image description here
  • 在“其他”标题下,将列统计信息设置为0 enter image description here
  • 再次导出enter image description here

祝你好运!

答案 1 :(得分:3)

这个想法是这样的:每个服务器版本都有一个专用的mysqldump版本。这不是理想的,当然也不是向后兼容的,但这就是这种情况。 MySQL Workbench只能包含一个mysqldump二进制文件,因此使用最新的二进制文件。从那里下载MySQL 5.7 zip并使用mysqldump的方法是一个很好的解决方法,没有很多副作用。您只需要注意转储哪个服务器以及哪个转储版本即可。

如果您希望MySQL Workbench自动应用该列状态标志,请在https://bugs.mysql.com提交错误报告。

更新

与此同时,还创建了一个错误报告:https://bugs.mysql.com/bug.php?id=91640

答案 2 :(得分:1)

如果您正在运行支持mysqldump的操作系统(即Linux),则可能有另一种解决方法。在首选项中将路径设置为mysqldump二进制文件,并在该路径中包括--column-statistics = 0参数,位于: 编辑>>首选项>>管理>> MysqlDump工具的路径

答案 3 :(得分:1)

下载Mysql Workbench 8.0.16的最新版本,没有更多问题。

https://dev.mysql.com/downloads/workbench/

没有检查选项!

答案 4 :(得分:0)

我已经下载了8.0.16版本,仍然是同一问题。

在数据导出高级选项中,我没有看到有关“统计”的任何选项! 我在

的my.ini中添加了
[mysqldump]
quick
max_allowed_packet = 16M
column-statistics=0

不能解决问题

我一直在搜索,但找不到解决方案。我找到了一个正在为此而苦苦挣扎的同伴,但至少没有一个解决方案的人至少对我而言。

最后,我更改了MySQL Workbench文件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

我对

发表了评论
if get_mysqldump...

我知道这不是办法,但现在找不到其他更好的解决方案。对我来说,这至少是怪异和奇怪的。如果有人有更好的解决方案,请告诉我!

答案 5 :(得分:0)

WINDOWS用户

我有 MySQL Workbench 8.0CE和Xampp v3.2.3 ,它对我有用:

  1. 打开xampp,然后打开mysql config> my.ini //添加:column-statistics = 0这样:
    [mysqldump]
    quick
    max_allowed_packet = 16M
    column-statistics = 0

保存并关闭,重新启动xampp mysql服务器。 (以防万一)

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

在Mysqldump路由中,以您的xampp的mysqldump路由为例:

C:\xampp\mysql\bin\mysqldump.exe

这对我有用!

答案 6 :(得分:0)

我通过修改MySQL Workbench配置文件wb_admin_export.py来解决此问题。

请参阅我的答案here

答案 7 :(得分:0)

Mysql-workbench版本8.0.14 中,您无法选择禁用列统计。 但是您可以选择启用delete-master-logs 来做到这一点: https://stackoverflow.com/a/64855306/10747412

答案 8 :(得分:0)

打开 MySQL Workbench Preferences 并根据您的 xampp / mysql 服务器路径选择 Path to mysqldump Tool

MySQL Workbench 编辑 > 首选项 > 管理

<块引用>

C:\xampp\mysql\bin\mysqldump.exe

就这样

答案 9 :(得分:0)

我使用的是 Ubuntu 16.04、MySql Workbench 6.3.6、MySql 8.0.25、MySqlDump 8.0.25。

我的解决方法如下:

  1. 打开/usr/lib/mysql-workbench/modules/wb_admin_export.py
  2. 替换
s = re.match(".*Distrib ([\d.a-z]+).*", output)

s = re.match(".*mysqldump  Ver ([\d.]+).*", output) 
  1. 替换
cmd = subprocess.list2cmdline(args) 

args.append("--column-statistics=0")
cmd = subprocess.list2cmdline(args)