📌  相关文章
📜  mysqldump: 无法从 information_schema.column_statistics 执行 'select column_name, json_extract(histogram, '$."number-of-buckets-specified"') - SQL (1)

📅  最后修改于: 2023-12-03 14:44:31.159000             🧑  作者: Mango

mysqldump 中的 column_statistics 错误

当使用 mysqldump 命令备份 MySQL 数据库时,有时会遇到以下错误信息:

mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') AS num_buckets, JSON_EXTRACT(HISTOGRAM, '$."bucket-contents"') AS bucket_content, JSON_EXTRACT(NULLIF(HISTOGRAM_BOUNDS, ''), '$."lower-bound"') AS lower_bound, IFNULL(JSON_EXTRACT(HISTOGRAM_BOUNDS, '$."upper-bound"'), 'inf') AS upper_bound FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') IS NOT NULL': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

这是因为 mysqldump 在备份时,会查询数据库中所有表的 column_statistics 信息,但某些 MySQL 版本(如 5.7.22 及之前的版本)不支持此操作。

解决方案

  1. 升级 MySQL 版本

如果您正在使用的 MySQL 版本低于 5.7.23,建议升级到最新版本(当前为 8.0.27)以获得更好的支持和性能。

  1. 使用 --skip-column-statistics 选项

您可以在执行 mysqldump 命令时添加 --skip-column-statistics 选项,跳过 column_statistics 信息的备份。

mysqldump --skip-column-statistics -u username -p your_database_name > /path/to/your/backup.sql

请注意,使用该选项可能会使统计分析等相关操作失效。

总结

mysqldump 备份时出现 column_statistics 错误可能是由于 MySQL 版本较低或相关表丢失导致的。对于该问题,您可以选择升级 MySQL 或使用 --skip-column-statistics 选项,以便正常备份数据。