我想将我的一个数据库从myisam迁移到innodb。主要原因是允许我的申请尊重参照完整性。
这就是我做的事情
参照完整性现在有效。例如,如果我创建父p1和子c1并在c1中引用p1,只要存在依赖于它的子项,我就无法删除P1。
到目前为止一切顺利
但是当我从导出的转储中导入旧数据时会出现问题
问题在于参考完整性适用于新数据。但是在我现有的数据中,如果存在c2引用的p2之类的任何关系,那么我可以删除p2,破坏参照完整性。 c2现在是孤儿。
有没有办法修复/重新索引表,以便对现有数据实施参照完整性?
答案 0 :(得分:0)
确保所有外键和引用键都有新索引(每个插入时都更新表索引)然后运行
ALTER TABLE you_table0 ADD FOREIGN KEY ...
每个表都有,所有遗留数据都已到位。
应该工作)
答案 1 :(得分:0)
感谢您的回答。这本来是有用的,因为这会让我找到根本原因。问题的根本原因是我的mysqldump包含drop和create语句。创建语句具有ENGINE = MYISAM,因为在导出时这是引擎。
我使用--no-create-info选项创建了新的转储,一切正常。