我需要将许多mysql MyISAM表迁移到一个新的InnoDb版本,添加外键约束。我可以转储和导入,禁用第一个外键检查。
但是,当我再次激活外键检查时,是否有一种方法可以检查哪些表存在约束问题(不需要手动检查所有这些表)?
发布于 2019-11-28 12:04:05
这正是测试数据库的用途。
创建一个并尝试将数据加载到其中。
如果它装上了,很好。如果没有,MySQL会告诉你为什么它不能这样做。
发布于 2019-11-29 20:16:36
这可能有点混乱:
但是..。如果按“错误”顺序加载表,那么步骤5中会有很多失败。
在同一服务器上:
CREATE DATABASE try;CREATE TABLE try.tbl LIKE real.tbl;ALTER TABLE try.tbl ENGINE=InnoDB;INSERT INTO try.tbl SELECT * FROM real.tbl;在现有的MyISAM数据库中,设计并运行查找任何FK错误的选择。这可能涉及到LEFT JOIN ... IS NULL (查找缺少的行)。
建议使用小型LIMIT和/或用SELECT COUNT(*)包装。
https://dba.stackexchange.com/questions/254338
复制相似问题