MySql给我:ERROR 1215(HY000):无法添加外键约束

时间:2017-03-04 15:58:53

标签: mysql

CREATE TABLE users (
    id INT(8) AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    second_name VARCHAR(30) NOT NULL,
    username VARCHAR(8) NOT NULL,
    password VARCHAR(12) NOT NULL,
    administrator BOOLEAN default false,
    PRIMARY KEY (id)
)ENGINE=InnoDB;

CREATE TABLE account(
    account_number INT(8) NOT NULL,
    name VARCHAR(20) NOT NULL,
    second_name VARCHAR(30) NOT NULL,
    username VARCHAR(8) NOT NULL,
    account_type INT(5) NOT NULL,
    PRIMARY KEY (account_number),
    CONSTRAINT FOREIGN KEY(name) REFERENCES users(name)
)ENGINE=InnoDB; 

我想从表帐户和表名用户的“名称”建立关系,但它给我这个错误:ERROR 1215(HY000):无法添加外键约束

我搜索了不同的页面,但我找不到解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

外键约束应该是主键。虽然你可以对唯一甚至非唯一键(在MySQL中)有限制,但这通常是一种不好的做法。

所以:

CREATE TABLE account (
    account_number INT(8) NOT NULL,
    user_id int NOT NULL,
    second_name VARCHAR(30) NOT NULL,
    username VARCHAR(8) NOT NULL,
    account_type INT(5) NOT NULL,
    PRIMARY KEY (account_number),
    CONSTRAINT FOREIGN KEY (user_id) REFERENCES users(id)
)ENGINE=InnoDB; 

请注意,该名称不在account表中。要获取名称,您需要JOINusers