gpt4 book ai didi

mysql - 为什么MySQL不允许使用这个外键?

转载 作者:行者123 更新时间:2023-11-29 08:27:15 25 4
gpt4 key购买 nike

我正在使用 MySQL 5 尝试创建两个表。这是两个表:

DROP TABLE IF EXISTS  `users` ; 
CREATE TABLE IF NOT EXISTS `users` (
`username` VARCHAR(50) not null ,
`password` VARCHAR(50) not null,
`enabled` boolean not null,
`accountNonExpired` boolean not null,
`accountNonLocked` boolean not null,
`credentialsNonExpired` boolean not null,
PRIMARY KEY (`username`)
) ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;


DROP TABLE IF EXISTS `authorities` ;
create table IF NOT EXISTS `authorities` (
`username` VARCHAR(50) not null ,
`authority` varchar(50) not null,
foreign key (`username`) references `users` (`username`),
unique index authorities_idx_1 (username, authority)
) engine = InnoDb;

当我尝试执行此语句时,会创建用户表,但随后出现错误:

 Error Code: 1005 
Can't create table 'dental.authorities' (errno: 150)

我不明白为什么当两个引用的列相同时该外键会失败。有吗

最佳答案

外键要求两个键具有相同的字符集。添加

DEFAULT CHARACTER SET = utf8;

到你的第二个表CREATE指令。

编辑:天哪,看来我参加聚会迟到了。

关于mysql - 为什么MySQL不允许使用这个外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com