【问题标题】:Errror 3554 while importing a .sql file导入 .sql 文件时出现错误 3554
【发布时间】:2019-04-05 19:56:15
【问题描述】:

ERROR 3554 (HY000) at line 318: 访问系统表 'mysql.innodb_index_stats' 被拒绝。

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

如何允许访问该表?

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      您也可以使用 --force 选项规避此错误,该选项会导致 mysql 客户端在出现错误时继续运行。

      【讨论】:

      • 这可能是最好的,因为我的旧数据库已损坏并且无法访问 - 这就是我要恢复备份的原因。
      【解决方案3】:

      尝试像这样将 -f 添加到您的命令中:

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

      -f 表示--force。

      这对我有用!

      【讨论】:

      • 普拉兹林不也是这么说的吗?
      【解决方案4】:

      在Mysql 8中好像有限制,把sql文件中的insert语句去掉。如果文件非常大,您可能必须使用 sed

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

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

      【讨论】:

        【解决方案5】:

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

        检查第 318 行并找出它为什么试图插入到该表中。

        【讨论】:

          猜你喜欢
          • 2012-10-25
          • 2013-07-19
          • 1970-01-01
          • 1970-01-01
          • 2013-07-17
          • 1970-01-01
          • 2019-06-17
          • 1970-01-01
          • 2015-12-24
          相关资源
          最近更新 更多