MySQL是一款常用的關系型數據庫管理系統,很多開發人員在使用MySQL時都會涉及到建立外鍵的操作。然而,有時候在建立外鍵時會遇到外鍵保存無效的問題,這個問題很讓人頭疼。
通常情況下,在MySQL中建立外鍵需要兩個表都存在,而且需要滿足一定的條件,例如外鍵列名、參考表的列名等都必須一致。如果這些條件不滿足,就會導致外鍵保存無效。
// 創建一個關聯表和主表,其中關聯表中的'item_id'和主表中的'id'來自于同一個表 CREATE TABLE `items` ( `id` INT(11) NOT NULL PRIMARY KEY, `name` VARCHAR(255) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `item_reviews` ( `id` INT(11) NOT NULL PRIMARY KEY, `item_id` INT(11) NOT NULL, `review` TEXT NOT NULL, FOREIGN KEY (`item_id`) REFERENCES `items` (`id`) ) ENGINE=InnoDB;
上面的代碼展示了一個建立外鍵的例子,在item_reviews表中的item_id列添加外鍵,關聯到items表中的id列。
當我們運行上面的代碼時,發現MySQL并沒有報錯,但是在查看表結構時發現外鍵并沒有保存成功,這就是外鍵保存無效的問題。
出現這個問題的原因通常有兩種:一是關聯表或主表不存在;二是數據類型不一致。在上面的例子里,如果我們調整表的順序,先創建item_reviews表再創建items表,或者將id列的數據類型改為bigint,就會出現外鍵保存無效的情況。
總之,在MySQL中建立外鍵需要嚴格按照規范來操作,保證兩個表都存在且滿足一定的條件,這樣才能讓外鍵保存成功。