首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 創建外鍵報錯 ERROR 1005 (errno: 150) 解決:用 SHOW ENGINE INNODB STATUS 定位具體原因

     編輯:MySQL 資料庫相關知識

錯誤現象

ERROR 1005 (HY000): Can't create table 'db_qxztc.qx_userssssnew' (errno: 150)

僅提示錯誤碼,無具體原因。

定位神器

SHOW ENGINE INNODB STATUS;

輸出中搜尋 LATEST FOREIGN KEY ERROR 區塊:

------------------------
LATEST FOREIGN KEY ERROR
------------------------
111211 12:49:34 Error in foreign key constraint of table db_qxztc/qx_userssssnew:
foreign key(`SSSSID`) references`qx_SSSS`(`SSSSID`)):
Syntax error close to:
`qx_SSSS`(`SSSSID`))

實戰案例

報錯提示 references`qx_SSSS`(`SSSSID`) 附近語法錯誤。檢查原 SQL:

ALTER TABLE qx_userssssnew
ADD CONSTRAINT fk_ssss FOREIGN KEY (SSSSID) REFERENCES qx_SSSS(SSSSID);

發現 REFERENCES 關鍵字與表名之間**缺少空格**,導致解析器將 references`qx_SSSS` 視為單一標識符。修正:

... FOREIGN KEY (SSSSID) REFERENCES `qx_SSSS` (`SSSSID`);

常見 errno: 150 原因清單

原因檢查要點
父表/子表引擎不一致雙方必須為 InnoDB
引用列類型/長度/符號不匹配如 INT vs BIGINT、UNSIGNED 不一致
父表引用列非索引或非主鍵父表該列需有索引(主鍵/唯一/普通)
字符集/校對規則不同表級、列級 charset/collation 必須一致
語法細節(空格、反引號、大小寫)用 SHOW ENGINE INNODB STATUS 精確定位
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved