MySQL創建外鍵保存后消失是一種常見問題,這種情況通常是由于外鍵定義不當導致的。下面我們來分析一下可能會導致外鍵保存后消失的原因。
CREATE TABLE `table1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `table2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `table1_id` int(11) NOT NULL, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`), KEY `fk_table1_id` (`table1_id`), CONSTRAINT `fk_table1_id` FOREIGN KEY (`table1_id`) REFERENCES `table1` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1. 表類型不同。MySQL有多種表類型,包括MyISAM、InnoDB和MEMORY等,外鍵只能在有支持外鍵的表類型中使用。
2. 字符集不同。外鍵的字符集必須和父表的字符集一致,否則會出現保存后消失的情況。
3. 禁用外鍵約束。如果用戶禁用了MySQL的外鍵約束,那么創建的外鍵就不會生效。
4. 數據類型不兼容。外鍵的數據類型必須與父表中的字段類型兼容,比如int類型的外鍵不能引用一個varchar類型的主鍵。
總而言之,在創建MySQL外鍵時,必須考慮以上幾個問題,以免出現外鍵保存后消失的情況。請注意以上幾個問題,以確保成功創建MySQL外鍵。