我已经阅读了很多关于这个问题的问题,但似乎没有解决我的问题。
基本上,我收到以下错误:
Error Code: 1215. Cannot add foreign key constraint
尝试执行以下查询时:
CREATE TABLE IF NOT EXISTS Privacy (
Biography varchar(20),
BirthDate varchar(20),
Email varchar(20),
Location varchar(20),
RealName varchar(20),
Sex varchar(6),
User varchar(255),
PRIMARY KEY (User),
FOREIGN KEY (User) REFERENCES Users(Username)
ON DELETE SET NULL ON UPDATE CASCADE
) CHARACTER SET utf8;
我以为我在同一列上没有主键和外语,但后来我做了一些搜索,发现它完全没问题。也许我只是以错误的方式做到这一点。
修改
这是用户表:
CREATE TABLE IF NOT EXISTS Users ("
Avatar varchar(255),
Biography text,
Birth_Date date,
Email varchar(255),
Location varchar(255),
Password varchar(20),
Profile_Views int(11),
Real_Name varchar(255),
Reputation int(11),
Signup_Date datetime,
Username varchar(255),
PRIMARY KEY (Username)
) CHARACTER SET utf8;
答案 0 :(得分:3)
原因是ON DELETE SET NULL ON UPDATE CASCADE
行。
如果使用RESTRICT,MySQL会很高兴。
这是有道理的,因为一旦从Users表中删除用户,就无法使主键为NULL。
修改:您可以使用评论中指出的ON DELETE CASCADE
,然后删除隐私中的整行。
答案 1 :(得分:0)
CREATE TABLE IF NOT EXISTS Privacy (
Biography varchar(20),
BirthDate varchar(20),
Email varchar(20),
Location varchar(20),
RealName varchar(20),
Sex varchar(6),
User varchar(255),
PRIMARY KEY (User),
FOREIGN KEY (User) REFERENCES Users(User)
)