錯誤代碼:1005。無法建立表格...(errno:150)
嘗試在表sira_no 和metal_kod 之間建立外鍵約束,您遇到錯誤代碼1005,表示由於errno而無法建立表150.
此錯誤是由於程式碼中的主鍵引用不正確而導致的。定義外鍵關係時,父表中所引用的欄位必須存在,且與外鍵欄位的資料類型和大小相符,並且有索引或是主鍵。
故障排除步驟:
-
檢查欄位定義:確保METAL_KODU 欄位兩個表中的具有相同的資料類型和大小(例如,兩者都應該是VARCHAR(4),而不是VARCHAR(5)),包括有符號或無符號屬性。也要檢查區分大小寫。
-
建立索引:驗證metal_kod表中所引用的METAL_KODU欄位是否有索引。沒有索引,無法建立外鍵約束。
-
檢查表類型:涉及關係的兩個表都必須使用InnoDB儲存引擎支援外鍵約束。
-
檢查外鍵名稱:確保您的外鍵名稱(METAL_KODU) 不與現有的外鍵名稱重複key.
-
處理空值:如果父表中的METAL_KODU 欄位設定為NOT NULL 並且您已在外鍵限制中指定ON DELETE SET NULL,請變更列屬性或級聯行為。
-
字元集和排序規則:檢查字元集和排序規則表和鍵列的設定都相符。
-
刪除預設值:如果您的外鍵列有預設值(例如 default=0),請將其刪除。
-
檢查複合鍵:如果 METAL_KODU 欄位是父表中複合鍵的一部分,則為它建立一個單獨的索引該欄位支援外鍵約束。
-
查看語法:仔細檢查 ALTER TABLE 語句並確保欄位名稱輸入正確。
-
外鍵長度:確保您的外鍵名稱不超過最大長度64
透過解決這些潛在問題,您可以解決錯誤代碼1005 並成功在sira_no 和metal_kod 表之間建立外鍵關係。
以上是為什麼在建立外鍵約束時出現 MySQL 錯誤 1005 (errno: 150)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!