MySql告诉我:错误1215(HY000):无法添加外键约束

MySql告诉我:错误1215(HY000):无法添加外键约束,mysql,Mysql,我想为表帐户中的“name”和表用户中的“name”建立一个关系,但它给了我这个错误:错误1215(HY000):无法添加外键约束 我搜索了不同的页面,但没有找到解决方案 谢谢 外键约束实际上应该是主键约束。尽管可以对唯一的甚至非唯一的键(在MySQL中)进行约束,但这通常是一种不好的做法 因此: 请注意,帐户表中没有该名称。要获得名称,您需要将连接到用户外键约束实际上应该是主键约束。尽管可以对唯一的甚至非唯一的键(在MySQL中)进行约束,但这通常是一种不好的做法 因此: 请注意,帐户表中没有

我想为表帐户中的“name”和表用户中的“name”建立一个关系,但它给了我这个错误:错误1215(HY000):无法添加外键约束

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


谢谢

外键约束实际上应该是主键约束。尽管可以对唯一的甚至非唯一的键(在MySQL中)进行约束,但这通常是一种不好的做法

因此:


请注意,
帐户
表中没有该名称。要获得名称,您需要将连接到用户

外键约束实际上应该是主键约束。尽管可以对唯一的甚至非唯一的键(在MySQL中)进行约束,但这通常是一种不好的做法

因此:


请注意,
帐户
表中没有该名称。要获得名称,您需要
加入
用户

,但我需要关联“name”列。你的代码可以工作,但我不明白为什么我的代码不能工作。。。你能解释一下原因吗?谢谢你,兄弟@米克洛塞洛米利斯。您应该希望与主键的关系具有
id
。主键是外键使用的最佳列。不能对非键列进行外键引用,但我想关联“name”列。你的代码可以工作,但我不明白为什么我的代码不能工作。。。你能解释一下原因吗?谢谢你,兄弟@米克洛塞洛米利斯。您应该希望与主键的关系具有
id
。主键是外键使用的最佳列。不能对非键的列进行外键引用。
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; 
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;