我想转储数据库,即使遵循正确的语法,也会出现以下错误。
我使用的语法:
mysqldump -uroot -p omnichannel_store_india > omnichannel_store_india.sql
引发错误:
mysqldump:无法执行 “ SELECT COLUMN_NAME,JSON_EXTRACT(HISTOGRAM,'$。“指定的桶数”')来自information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME ='omnichannel_store_india'并且TABLE_NAME ='consignment_items';':
信息表(1109)中的未知表'column_statistics'
答案 0 :(得分:2)
这是由于在mysqldump 8中默认启用了“ column-statistics”标志。您可以通过添加--column-statistics = 0来禁用它。
该命令将类似于:
mysqldump --column-statistics=0 --host=<server> --user <user> --password <securepass>
默认情况下,要禁用列统计信息,可以在MySQL配置文件中添加以下内容,例如/etc/my.cnf或〜/ .my.cnf。
[mysqldump]
column-statistics=0
对我来说很棒。
有关“列统计”的更多详细信息
在输出中添加ANALYZE TABLE语句,以便在重新装入转储文件时为转储表生成直方图统计信息。默认情况下,此选项是禁用的,因为大型表的直方图生成可能会花费很长时间。 Ref(mysql official documentaion link)
答案 1 :(得分:0)
使用MySQL MySQL Workbench版本8.0.13
打开MySQL Workbench并单击“帮助”和“关于工作台”以了解您的MySQL Workbench版本-以下步骤不适用于MySQL Workbench版本> 8.0.13
在您的工作站上启动MySQL Workbench。
连接到数据库服务器。
点击侧边栏中的数据导出实用程序,然后选择要使用的数据库
备份和备份目标。请注意,您需要选中“包含创建模式”复选框,然后单击“开始导出”按钮
2:在列统计的另一部分中,删除TRUE并将其设置为0以禁用它。
还原数据库的步骤 a-在您的工作站上启动MySQL Workbench。
b-连接到新创建的MySQL服务器
c用记事本打开转储文件并删除所有DEFINER文件
在文件中找到所有DEFINER指令并将其删除:搜索DEFINER =
[之前]
/ *!50003创建 / / !50017 DEFINER = John Doe
@% / / !50003一些代码* / ;;
[之后]>
/ *!50003创建 / / !50003 MySQL代码* / ;;
答案 2 :(得分:0)
就我而言,我们使用 mariadb-server 和 mysql-client(8.0)。 column-statistics 是在 mysql-client 8.0 上引入的。 删除mysql-client并安装mariadb-client的快速修复方法。
在 ubuntu 20.04 上,命令是:
apt remove mysql-client
apt install mariadb-client