MySQL 刪除外鍵時常見 ERROR 1025 (errno: 152) 或建立外鍵 errno: 150,實為外鍵名稱錯誤或欄位定義不符,錯誤訊息極具誤導性。
ALTER TABLE ruler.test2child DROP FOREIGN KEY test; -- ERROR 1025: Error on rename of './ruler/test2child' to './ruler/#sql2-298-8f' (errno: 152)
SHOW ENGINE INNODB STATUS; -- LATEST FOREIGN KEY ERROR -- Cannot find a constraint with the given id "test".
SHOW CREATE TABLE table_name;
ALTER TABLE table_name DROP FOREIGN KEY `實際外鍵名稱`;
ALTER TABLE table_name DROP COLUMN `column_name`;
-- 正確做法(官方建議順序) ALTER TABLE task DROP FOREIGN KEY FK_Reference_7; ALTER TABLE task DROP COLUMN `assigned`;
SHOW ENGINE INNODB STATUS; -- You have defined a SET NULL condition though some of the columns are defined as NOT NULL.
ON DELETE SET NULL 但欄位定義 NOT NULLMySQL 5.2.0-falcon-alpha-community-nt(現代版本行為一致)
MySQL 外鍵錯誤訊息極不友善,務必用SHOW ENGINE INNODB STATUS看真實原因,不要被errno: 150/152誤導。