Mysql

“創建外鍵時出錯(檢查數據類型)……”但它們確實匹配……

  • April 20, 2018

我在嘗試創建約束時遇到以下錯誤:

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,但這完全是故意的,也是我需要的,我看不出這怎麼會是個問題。我可以理解如果是相反的方式……

這真的是問題嗎?為什麼?那我怎麼解決呢?我不想被迫在那裡插入一個值,即使我不需要,也不想NULLPRIMARY列上啟用,這沒有多大意義。

還有什麼問題?

這是 phpmyadmin 的錯誤。

當您創建一個新約束時,通常允許您將其名稱欄位留空,它會為您填充它。

這一次,由於一些未知的原因,這不起作用並給出了這個不相關的錯誤。

填寫名稱欄位起到了作用,並允許我創建約束。

我遇到了同樣的問題,碰巧看到了這個文章。我感覺最新版的phpmyadmin沒有這個bug。

外鍵的名稱必須是唯一的。您可以創建具有不同名稱的相同約束,但不能創建具有相同名稱的不同約束。甚至不在不同的桌子上。

但錯誤聲明保持不變:

創建外鍵時出錯(檢查數據類型)

……這是誤導。

引用自:https://dba.stackexchange.com/questions/149516