gpt4 book ai didi

mysql - (Mysql 错误 : #1215 - Cannot add foreign key constraint) for my program

转载 作者:行者123 更新时间:2023-11-29 05:23:01 25 4
gpt4 key购买 nike

使用外键创建表时出现问题。你能帮我解决一下吗?错误是:SQL查询:

ALTER TABLE users ADD CONSTRAINT FK_users FOREIGN KEY (groupname_id) REFERENCES groups(group_id) ON UPDATE CASCADE ON DELETE CASCADE;

MySQL 说:文档

1215 - 无法添加外键约束

CREATE TABLE IF NOT EXISTS `groups` (
`group_id` int(11) NOT NULL AUTO_INCREMENT,
`group_level` varchar(100) DEFAULT NULL,
`groupname` varchar(100) NOT NULL,
PRIMARY KEY (`group_id`),
KEY idx_groupname (groupname)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ;



CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(100) DEFAULT NULL,
`lastname` varchar(100) DEFAULT NULL,
`username` varchar(100) NOT NULL,
`password` char(100) NOT NULL,
`phone` varchar(100) DEFAULT NULL,
`is_active` int(1) NOT NULL DEFAULT '0',
`groupname_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;



ALTER TABLE users
ADD CONSTRAINT FK_users
FOREIGN KEY (groupname_id) REFERENCES groups(group_id)
ON UPDATE CASCADE
ON DELETE CASCADE;

最佳答案

正如我在评论中提到的,问题是 users 表上的 groupname_id 是未签名的,而 上的 group_id >groups 表已签名。

这是一种预感,所以我对其进行了测试,并且刚刚成功地在我的 test 数据库中添加和更改了这些表。 Windows 上的 MySQL 5.6.16。

CREATE TABLE IF NOT EXISTS `groups` (
`group_id` int(11) NOT NULL AUTO_INCREMENT,
`group_level` varchar(100) DEFAULT NULL,
`groupname` varchar(100) NOT NULL,
PRIMARY KEY (`group_id`),
KEY idx_groupname (groupname)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ;



CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(100) DEFAULT NULL,
`lastname` varchar(100) DEFAULT NULL,
`username` varchar(100) NOT NULL,
`password` char(100) NOT NULL,
`phone` varchar(100) DEFAULT NULL,
`is_active` int(1) NOT NULL DEFAULT '0',
`groupname_id` int(11) NOT NULL, -- should be signed, not unsigned, just like above
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;



ALTER TABLE users
ADD CONSTRAINT FK_users
FOREIGN KEY (groupname_id) REFERENCES groups(group_id)
ON UPDATE CASCADE
ON DELETE CASCADE;

关于mysql - (Mysql 错误 : #1215 - Cannot add foreign key constraint) for my program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381818/

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