0

我刚刚发现我的数据库在过去几个月中在几台服务器之间移动,在其中一个数据库转储中,转换为 myisam 并且所有外键约束都被删除(没有留下深刻印象)。我已经使用 php 脚本将所有表转换回 innodb,但现在我发现有一半的约束无法添加。

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`identicar2`.<result 2 when explaining filename '#sql-2a7_c0'>, CONSTRAINT `#sql-2a7_c0_ibfk_1` FOREIGN KEY (`feature_sk`) REFERENCES `tbl_feature_list` (`feature_sk`))

我现在迷路了,我无法手动浏览数千条记录。为了使我的数据库恢复正常,最好的方法是什么?

如果您愿意,我可以提供表格结构,但我想任何解决方案都将独立于确切的结构

4

1 回答 1

1

最简单的解决方案:(包含丢失您可能想要保留的数据的明显危险)

UPDATE table
SET fkColumn = NULL
WHERE fkColumn NOT IN (SELECT referenceColumn FROM referencedTable)

如果您只想找到它们:

SELECT *
FROM table
WHERE fkColumn NOT IN (SELECT referenceColumn FROM referencedTable)
于 2013-02-02T23:03:00.153 回答