首頁 >資料庫 >mysql教程 >為什麼在建立外鍵約束時出現 MySQL 錯誤 1005 (errno: 150)?

為什麼在建立外鍵約束時出現 MySQL 錯誤 1005 (errno: 150)?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-06 11:48:20575瀏覽

Why Am I Getting MySQL Error 1005 (errno: 150) When Creating a Foreign Key Constraint?

錯誤代碼:1005。無法建立表格...(errno:150)

嘗試在表sira_no 和metal_kod 之間建立外鍵約束,您遇到錯誤代碼1005,表示由於errno而無法建立表150.

此錯誤是由於程式碼中的主鍵引用不正確而導致的。定義外鍵關係時,父表中所引用的欄位必須存在,且與外鍵欄位的資料類型和大小相符,並且有索引或是主鍵。

故障排除步驟:

  1. 檢查欄位定義:確保METAL_KODU 欄位兩個表中的具有相同的資料類型和大小(例如,兩者都應該是VARCHAR(4),而不是VARCHAR(5)),包括有符號或無符號屬性。也要檢查區分大小寫。
  2. 建立索引:驗證metal_kod表中所引用的METAL_KODU欄位是否有索引。沒有索引,無法建立外鍵約束。
  3. 檢查表類型:涉及關係的兩個表都必須使用InnoDB儲存引擎支援外鍵約束。
  4. 檢查外鍵名稱:確保您的外鍵名稱(METAL_KODU) 不與現有的外鍵名稱重複key.
  5. 處理空值:如果父表中的METAL_KODU 欄位設定為NOT NULL 並且您已在外鍵限制中指定ON DELETE SET NULL,請變更列屬性或級聯行為。
  6. 字元集和排序規則:檢查字元集和排序規則表和鍵列的設定都相符。
  7. 刪除預設值:如果您的外鍵列有預設值(例如 default=0),請將其刪除。
  8. 檢查複合鍵:如果 METAL_KODU 欄位是父表中複合鍵的一部分,則為它建立一個單獨的索引該欄位支援外鍵約束。
  9. 查看語法:仔細檢查 ALTER TABLE 語句並確保欄位名稱輸入正確。
  10. 外鍵長度:確保您的外鍵名稱不超過最大長度64

透過解決這些潛在問題,您可以解決錯誤代碼1005 並成功在sira_no 和metal_kod 表之間建立外鍵關係。

以上是為什麼在建立外鍵約束時出現 MySQL 錯誤 1005 (errno: 150)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn