第 318 行出现错误 3554 (HY000):对系统表“mysql.innodb_index_stats”的访问被拒绝。
操作失败,退出代码 1 11:27:20 C:\Users\VELOXSHOP\Downloads\dumpfilename.sql 的导入已完成,但有 1 个错误
我如何允许访问该表?
您需要对旧数据库进行新的转储/备份,这次从目标中删除这些 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
您还可以使用 --force 选项来规避此错误,这会导致 mysql 客户端尽管出现错误仍继续运行。
尝试将 -f 添加到您的命令中,如下所示:
mysql -u root -p -f < dump.sql
-f 表示 --force。
这对我有用!
Mysql 8 中好像受到限制,去掉sql文件中的insert语句。如果文件很大,你可能必须使用 sed
这是一个 MySQL 系统表,您不太可能直接向其中插入记录。当阈值通过时,MySQL 应该在计算索引的新统计信息时更新表。
检查第 318 行并找出它为何尝试插入到该表中。
当我使用 MySQL 5.7 进行导出(mysqldump),然后不小心尝试将其导入到 MySQL 8.0 时,我遇到了这个问题。正确的事件顺序是将数据导入 MySQL 5.7 实例,然后将其升级到 8.0。