繁体   English   中英

errno 150 mySQL外键

[英]errno 150 mySQL foreign key

当我尝试使用UserID上的外键创建第二个表时,此SQL给我Errno 150

谁能告诉我我在做什么错?

CREATE DATABASE IF NOT EXISTS  OTA;
USE OTA;
CREATE TABLE IF NOT EXISTS Users
(
UserID int AUTO_INCREMENT NOT NULL PRIMARY KEY,
UserName varchar(255) NOT NULL,
Email varchar(255) UNIQUE ,
PW varchar(255),
PN varchar(255),
Admin BIT
);


CREATE TABLE IF NOT EXISTS Notes
(
UID int AUTO_INCREMENT NOT NULL PRIMARY KEY,
Note varchar (255) NOT NULL,
c_Date Date NOT NULL,
c_text varchar (255) NOT NULL,
FOREIGN KEY (UID) REFERENCES Persons(UserID)
);

对不起,我是一个重复的问题,但我找不到相关问题之间的答案。

问题是,当您的第一个表称为Users时,您正在尝试引用Persons(UserID) 试试这个作为您的密钥:

FOREIGN KEY (UID) REFERENCES Users(UserID)

但是,您应该在注释ID的单独一列。

在以下情况下尝试声明主键:

CREATE TABLE Orders
(O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id))

另外,您会自动增加UID和UserID。 如果它们的长度相同,这很好,但是如果您尝试引用不存在的外键值,则会出现错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM