mysql - 创建具有两个外键的表失败

标签 mysql

假设我想为登录页面创建一个表来保存用户名和密码,并在其他表中引用它来存储角色。

CREATE TABLE Login (
 username VARCHAR(50) NOT NULL,
 password VARCHAR(50) NOT NULL,
 PRIMARY KEY (username)
);

Create Table User (
 username VARCHAR(50) NOT NULL, 
 password VARCHAR(50) NOT NULL,
 FOREIGN KEY(password) REFERENCES Login(password), 
 FOREIGN KEY(username) REFERENCES 
 Login(username)
);

包含密码似乎很重要,因为插入数据时它需要是一个非空字段。表 User 可能有一个用于存储角色或类似内容的整数,但我尝试在本示例中对其进行一些简化。

我收到以下错误:

ERROR 1005 (HY000): Can't create table 'databasename.user' (errno:150)

Error 150 is a type mismatch but they appear to be the same type - not null and varchar(50)

最佳答案

外键只能指向唯一的字段...主键字段是隐式唯一的。但密码不是。

关于mysql - 创建具有两个外键的表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16350759/

相关文章:

mysql - 以这种方式构建 SQL 表的缺点是什么?

php - Zend DB 表元数据对于整数列长度返回 null

mysql - 为 Mariadb 安装连接器 C

mySQL - 两个表之间的差异

MySQL 在非唯一列和时间戳条件下连接 2 个表

mysql - 将特定表列从一个数据库合并到另一个数据库

MySQL Select Query 在两个表中获取特定时间内的数据

php - mysqli::real_connect(): (HY000/2005): 未知的 MySQL 服务器主机

mysql查询2个带循环值的表

mysql - 数据插入后如何为sql表创建索引号列?