2015-02-09 119 views
1

我有一個MySQL數據庫與一個現有(而不是可移動)城市表與一個字段province_id一個表省新的引用。MySQL錯誤代碼:1452當添加索引和外鍵約束到現有的表

當我運行:

ALTER TABLE cities ADD province_id INTEGER NOT NULL; 
ALTER TABLE cities ADD INDEX (province_id), 
        ADD FOREIGN KEY (province_id) REFERENCES provinces (id); 

我的第二個查詢了下一個錯誤,添加索引和外鍵:

ALTER TABLE cities ADD INDEX (province_id),  ADD FOREIGN KEY (province_id) REFERENCES provinces (id) Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`yanpytest`.`#sql-16d8_325`, CONSTRAINT `#sql-16d8_325_ibfk_3` FOREIGN KEY (`province_id`) REFERENCES `provinces` (`id`)) 

我不明白爲什麼,這是行不通的在我的生產環境中,它正在開發中(都是MySQL)。

回答

0

這可能意味着在cities表的province_id列中有一些值,例如,其中id列中的provinces表中不存在123。所以外鍵(FK)約束不能被MySQL強制執行,並且會失敗。

您可以通過運行發現違規記錄:

SELECT * FROM `cities` WHERE `province_id` NOT IN 
(SELECT id FROM `provinces`) 
+0

關鍵是我已經檢查了。但我錯過了一個價值。 – Rober 2015-02-10 07:22:49

相關問題