![](/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.