导入 .sql 文件时出现错误 3554

问题描述 投票:0回答:6

第 318 行出现错误 3554 (HY000):对系统表“mysql.innodb_index_stats”的访问被拒绝。

操作失败,退出代码 1 11:27:20 C:\Users\VELOXSHOP\Downloads\dumpfilename.sql 的导入已完成,但有 1 个错误

我如何允许访问该表?

mysql mysql-workbench
6个回答
21
投票

您需要对旧数据库进行新的转储/备份,这次从目标中删除这些 innodb 表。您可以通过在命令行上使用 --ignore-table 参数来完成此操作:

mysqldump -u root -p --all-databases --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats > dump.sql

然后您应该能够使用以下命令在新数据库上恢复备份:

mysql -u root -p < dump.sql

14
投票

您还可以使用 --force 选项来规避此错误,这会导致 mysql 客户端尽管出现错误仍继续运行。


8
投票

尝试将 -f 添加到您的命令中,如下所示:

mysql -u root -p -f < dump.sql

-f 表示 --force。

这对我有用!


2
投票

Mysql 8 中好像受到限制,去掉sql文件中的insert语句。如果文件很大,你可能必须使用 sed

https://stackoverflow.com/a/26379517/1106420

https://bugs.mysql.com/bug.php?id=92675


0
投票

这是一个 MySQL 系统表,您不太可能直接向其中插入记录。当阈值通过时,MySQL 应该在计算索引的新统计信息时更新表。

检查第 318 行并找出它为何尝试插入到该表中。


0
投票

当我使用 MySQL 5.7 进行导出(mysqldump),然后不小心尝试将其导入到 MySQL 8.0 时,我遇到了这个问题。正确的事件顺序是将数据导入 MySQL 5.7 实例,然后将其升级到 8.0。

© www.soinside.com 2019 - 2024. All rights reserved.