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

Flo*_*yer 21 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,'$."number-of -buckets-specified"')FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME ='db_name'AND TABLE_NAME ='table_name';':information_schema中的未知表'COLUMN_STATISTICS'(1109)

exitcode 2操作失败14:50:24导出C:\ path \到\ my\dump已完成1个错误

MySQL(Workbench)8中是否有任何方法可以column-statistics永久禁用?


解决方法1

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

mysqldump --column-statistics=0 --host=...
Run Code Online (Sandbox Code Playgroud)

解决方法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工具的路径


提前致谢!

Tro*_*oyd 14

最简单的解决方案

使用Mysql Workbench 8.0时

  • 打开"数据导出"选项卡
  • 单击高级选项 在此输入图像描述
  • 在"其他"标题下,将列统计信息设置为0 在此输入图像描述
  • 再次出口在此输入图像描述

祝你好运!

  • 在v8.0.14中看起来他们删除了这个选项. (30认同)
  • 此选项在v8.0.16上仍然不可用 (4认同)
  • 8.0.21 仍然不可用。我不知道MySQL团队现在在做什么 (4认同)
  • 在v8.0.14和v8.0.15中有一个针对此删除的错误报告:https://bugs.mysql.com/bug.php?id=94294将在v8.0.16中重新引入。 (3认同)
  • 8.0.19 版本中仍然不可用 (2认同)

小智 10

我的解决方法:

  1. 创建名为mysqldump.cmd的文件,其内容如下:
    @echo off
    "c:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe" %* --column-statistics=0
Run Code Online (Sandbox Code Playgroud)

(如有必要,请替换为mysqldump.exe的路径)

  1. 打开MySQL Workbench,然后转到“编辑”>“首选项”>“管理”,将路径更改为mysqldump工具并将其指向mysqldump.cmd

  • 这对我在使用 MySQL Workbench 版本 8.0.15 版本 14271522 CE(64 位)和 MySQL 5.7 数据库实例时有用 (3认同)
  • 这似乎是自 8.0.19 起唯一有效的解决方法,所以谢谢。 (2认同)

Mik*_*hke 5

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

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

更新

同时为这个问题创建了一个错误报告:https : //bugs.mysql.com/bug.php?id=91640


小智 5

我已经下载了 8.0.16 版本,还是同样的问题。

在数据导出高级选项中,我没有看到任何关于“统计”的选项!我在 my.ini 添加了

[mysqldump]
quick
max_allowed_packet = 16M
column-statistics=0
Run Code Online (Sandbox Code Playgroud)

不解决问题

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

最后,我更改了 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
Run Code Online (Sandbox Code Playgroud)

我已发表评论

if get_mysqldump...
Run Code Online (Sandbox Code Playgroud)

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

PS 更改后重启 Workbench


小智 5

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
Run Code Online (Sandbox Code Playgroud)

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

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

在 Mysqldump 路由中放置 xampp 的 mysqldump 路由,在我的例子中:

C:\xampp\mysql\bin\mysqldump.exe
Run Code Online (Sandbox Code Playgroud)

这对我有用!