使用MySQL Workbench/命令行执行mysqldump导出时报1356错误如何解决
MySQL mysqldump导出报错1356的诱因与解决方法
错误诱因
- 报错涉及的
schema_table_statistics、schema_table_statistics_with_buffer是MySQL内置sys库的系统视图,通常是误操作被复制到了业务库TEST中,视图依赖的performance_schema底层表、sys库内置函数在TEST库不存在,导致视图本身处于损坏状态,mysqldump执行锁表、字段查询操作时校验失败。 - 视图的定义者用户已被删除,或者执行导出操作的用户没有访问
performance_schema、sys库对应依赖对象的权限。
解决方案
方案1:删除冗余视图(推荐)
如果TEST库中的这两个视图无实际业务用途,直接删除即可解决报错:
DROP VIEW IF EXISTS TEST.schema_table_statistics; DROP VIEW IF EXISTS TEST.schema_table_statistics_with_buffer;
删除后重新执行导出操作即可。
方案2:导出时跳过损坏视图
如果暂时无法处理视图,可在mysqldump命令中添加忽略表参数跳过这两个视图:
- 命令行导出示例:
mysqldump -u root --password='Password' --all-databases --ignore-table=TEST.schema_table_statistics --ignore-table=TEST.schema_table_statistics_with_buffer > /bkp/202111011013-FileName.sql
- MySQL Workbench导出时,在「高级选项」中添加上述两个
--ignore-table参数即可。
方案3:修复损坏视图
如果需要保留这两个视图,先执行以下操作修复:
- 确认导出用户有足够权限:
GRANT SELECT ON performance_schema.* TO 'root'@'对应访问IP'; GRANT SELECT ON sys.* TO 'root'@'对应访问IP'; FLUSH PRIVILEGES;
- 如果权限配置完成仍报错,说明视图定义已损坏,参考官方
sys库的视图定义,重新创建TEST库下的两个视图即可。
额外优化:命令行明文密码警告可通过将密码写入配置文件的[mysqldump]段,通过--defaults-file参数加载配置文件解决,避免明文密码泄露风险。
内容的提问来源于stack exchange,提问作者MrGrEEN
相关产品推荐
相关产品推荐

