MYSQL:无法添加外键约束

时间:2014-03-06 12:19:19

标签: mysql

我已经阅读了很多关于这个问题的问题,但似乎没有解决我的问题。

基本上,我收到以下错误:

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;

2 个答案:

答案 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)
)