![](/img/trans.png)
[英]MYSQL Cant not create table errno: 150 Foreign key constraint is incorrectly formed
[英]MYSQL Foreign Key, Cant create table (errno:150)
我正在嘗試為我的系統構建數據庫和表。 但是我發現,如果不在代碼中添加外鍵。 沒有錯誤。 我使用了很多方法嘗試使代碼正常工作,但是仍然有錯誤。
Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255)
);
Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,
FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),
FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);
您的外鍵中有一個錯字:
FOREIGN KEY (users_password) REFERENCES users_details_one(users_spassword)
應該是FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
並且您還需要在表users_details_one
users_email
和users_password
上的users_details_one
,例如:
Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255),
index (users_email),
index (users_password)
);
Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,
FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),
FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);
索引不必唯一。
MySQL需要在外鍵和引用鍵上建立索引,以便外鍵檢查可以快速進行,而無需進行表掃描。 在引用表中,必須有一個索引,其中外鍵列以相同的順序列為第一列。 如果這樣的索引不存在,則會在引用表上自動創建。
如果要使列作為外鍵,則這些列必須是主鍵,或者必須具有唯一性約束,即在您的情況下,users_details_one的users_email和users_password必須是唯一鍵或主鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.