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

标签 mysql mysql-workbench mysql-8.0

MySQL 8 以来,column-statistics 标志默认启用。

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

14:50:22 Dumping db (table_name) Running: 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: Couldn't execute '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';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

Operation failed with exitcode 2 14:50:24 Export of C:\path\to\my\dump has finished with 1 errors

在 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 工具路径


提前致谢!

最佳答案

我的解决方法:

  1. 创建名为 mysqldump.cmd 的文件,内容为:
    @echo off
    "c:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe" %* --column-statistics=0

(必要时替换 mysqldump.exe 的路径)

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

关于mysql - 如何永久禁用 MySQL 8 中的列统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51614140/

相关文章:

php - SESSION checkin 用户页面

python - 如何使用 python 克服此 sql 连接错误?

mysql-workbench - 有没有办法将我现有的连接从 MySQL Workbench 导出到 Sequel PRO

mysql - MySQL 8 上的基本 sql 查询失败

MYSQL JSON - 在其同级键值上使用 WHERE 提取 JSON 字段的一部分

mysql - 如何使用时间戳排序从时间戳中获取带有月份和年份的唯一记录

Mysql:计算没有时间的日期

javascript - 当用户单击刷新按钮时从 mysql 表中删除数据

php - 如何将日期格式 yyyy-mm-dd 更改为 dd-mm-yyyy

mysql触发器,在更新后删除特定列记录