核心原因:父表主鍵與子表外鍵欄位在資料類型、長度、符號位、字符集、校對規則任一維度不完全一致。
INT vs BIGINT、SMALLINT vs MEDIUMINT。UNSIGNED vs 有符號。CHAR(10) vs VARCHAR(10)、字符集 utf8 vs utf8mb4、校對 utf8_general_ci vs utf8_bin。檢查清單:SHOW CREATE TABLE parent\G、SHOW CREATE TABLE child\G 逐欄對照。
外鍵名稱在同一資料庫內必須唯一,即使屬不同表。
解決:顯式命名 CONSTRAINT fk_unique_name FOREIGN KEY ...,避免自動生成重複。
報錯後立即執行,查看 LATEST FOREIGN KEY ERROR 區塊,包含具體不匹配欄位與建議修正方案。
BIGINT UNSIGNED NOT NULL 等。SET FOREIGN_KEY_CHECKS=0)提升寫入效能。