簡體   English   中英

MySQL errno: 150 無法創建表

[英]MySQL errno: 150 can't create table

我知道關於這個錯誤有很多關於 SO 的問題,但即使應用我從這些中收集的信息,我仍然得到“無法創建表(錯誤號:150)”

CREATE TABLE sch_results
(
id INT NOT NULL AUTO_INCREMENT,
s_id INT UNSIGNED NOT NULL,
r_eid VARCHAR(10) NOT NULL,
cohorts INT,
allstudents INT,
comments TEXT,
PRIMARY KEY (id),
FOREIGN KEY (s_id) REFERENCES scholarships (id),
FOREIGN KEY (r_eid) REFERENCES sch_recommenders (eid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我已經檢查過外鍵是否完全以該名稱存儲在各自的表中。
我已經檢查過它們各自的數據類型是否與此查詢匹配。 我檢查了兩個現有表是否使用 InnoDB 和 utf8。
我在外鍵中添加了 UNSIGNED NOT NULL。
我在他們的表中索引了兩個外鍵。 最初,我使用 s_id 和 r_id,但聽說這可能會導致一些問題。 r_eid 也是唯一的,所以我切換到那個。 它不是主鍵。

我錯過了什么?

對於此錯誤的基本上所有原因,這里是導致 MySQL 中 errno 150(和 errno 121/其他外鍵錯誤)的原因的詳盡資源。

MySQL 外鍵錯誤和 Errno 150

問題是源字段和目標字段在各個方面都需要相同。 例如,如果源字段“無符號”關閉,而目標字段“無符號”打開,您將收到此錯誤。

結果發現排序規則設置為 utf8-unicode-ci 而不是 utf8-general-ci。 修復了它,現在可以使用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM