錯誤代碼1005:了解「無法建立表」問題
嘗試執行資料庫修改時,可能會出現錯誤代碼1005 ,並伴有訊息「無法建立表格'...'」(errno: 150)。此錯誤會阻止建立新表或修改現有表。
確定根本原因
此錯誤的根本原因通常在於不正確的主要原因關鍵參考。雖然在線找到的解決方案可能無法解決該問題,但有幾個已知原因可能會觸發此錯誤:
-
數據類型或大小不匹配:參與某個表的不同表中的主鍵外鍵關係必須在資料類型和大小上完全匹配。例如,如果一個宣告為 INT(10),則另一個也必須是 INT,而不是 BIGINT 或 SMALLINT。
-
缺少索引或非主鍵: 外鍵連結欄位需要對應的索引或必須是引用表的主鍵。
-
重複外鍵名稱: 外鍵的名稱在資料庫中必須是唯一的。考慮在外鍵名稱中新增唯一識別碼以排除這種可能性。
-
與 MyISAM 表不相容:MyISAM 表不支援外鍵。確保關係涉及的兩個表都使用 InnoDB 引擎。
-
外鍵列的 NOT NULL 限制: 如果指定級聯 ON DELETE SET NULL,則外鍵列不能被刪除設定為 NOT NULL。
-
字元集和整理不符: 字元集和主鍵的整理屬性必須在表格和欄位層級相符。
-
預設值限制:避免在外鍵列上設定預設值(例如,default=0)。
-
索引限制:複合鍵中使用的鍵字段需要外鍵引用的單獨索引,即使它們具有索引作為其一部分組合鍵。
-
語法或命名錯誤:仔細檢查 ALTER 語句是否有語法錯誤或欄位名稱中的拼字錯誤。
-
超出名稱限制: 外鍵名稱不能超過 64個字元
其他資源
有關此特定錯誤代碼的更多信息,請參閱以下資源:
以上是為什麼我收到 MySQL 錯誤 1005:「無法建立表格」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!