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`);
| 原因 | 檢查要點 |
|---|---|
| 父表/子表引擎不一致 | 雙方必須為 InnoDB |
| 引用列類型/長度/符號不匹配 | 如 INT vs BIGINT、UNSIGNED 不一致 |
| 父表引用列非索引或非主鍵 | 父表該列需有索引(主鍵/唯一/普通) |
| 字符集/校對規則不同 | 表級、列級 charset/collation 必須一致 |
| 語法細節(空格、反引號、大小寫) | 用 SHOW ENGINE INNODB STATUS 精確定位 |