Mysql
“創建外鍵時出錯(檢查數據類型)……”但它們確實匹配……
我在嘗試創建約束時遇到以下錯誤:
Error creating foreign key (check data types)
問題是……那些列數據類型確實匹配。
目標是一個
int(10) unsigned NOT NULL
並且是PRIMARY
列。同一個表中的源是一個int(10) unsigned DEFAULT NULL
,我試圖創建的約束是一個簡單的ON DELETE RESTRICT, ON UPDATE CASCADE
.現在,當然目標是
NOT NULL
,源是NULL
,但這完全是故意的,也是我需要的,我看不出這怎麼會是個問題。我可以理解如果是相反的方式……這真的是問題嗎?為什麼?那我怎麼解決呢?我不想被迫在那裡插入一個值,即使我不需要,也不想
NULL
在PRIMARY
列上啟用,這沒有多大意義。還有什麼問題?
這是 phpmyadmin 的錯誤。
當您創建一個新約束時,通常允許您將其名稱欄位留空,它會為您填充它。
這一次,由於一些未知的原因,這不起作用並給出了這個不相關的錯誤。
填寫名稱欄位起到了作用,並允許我創建約束。
我遇到了同樣的問題,碰巧看到了這個文章。我感覺最新版的phpmyadmin沒有這個bug。
外鍵的名稱必須是唯一的。您可以創建具有不同名稱的相同約束,但不能創建具有相同名稱的不同約束。甚至不在不同的桌子上。
但錯誤聲明保持不變:
創建外鍵時出錯(檢查數據類型)
……這是誤導。