MySQL 数据库中的外键约束给出错误

Foreign Key Constraints In MySQL DB Gives Error

我正在尝试实施外键约束,但 mysql 一直给我一个错误 有两个 tables "groups" table 和 "members" table.I 在这些 table 之间存在多对多关系,因此使用第三个 table 称为 "members_groups" table 来表示多对多关系。注意:"groups" 和 "members" table 已创建并包含数据,但我现在想添加 "members_groups" table。以下是 sql 代码:

下面是成员table的脚本。

CREATE TABLE IF NOT EXISTS `members` (
  `member_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) NOT NULL,
  `email` varchar(50) NOT NULL,
  `password` char(128) NOT NULL,
  `salt` char(128) NOT NULL,
  `group_id` bigint(64) unsigned NOT NULL,
  `perm_override_add` bigint(64) unsigned NOT NULL,
  `perm_override_remove` bigint(64) unsigned NOT NULL,
  PRIMARY KEY (`member_id`),
  KEY `member_id` (`member_id`)
) ENGINE=InnoDB;

组的脚本 table

CREATE TABLE IF NOT EXISTS `groups` (
  `group_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `group_name` varchar(50) NOT NULL,
  `permission` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`group_id`)
) ENGINE=InnoDB 

脚本 members_groups table

CREATE TABLE members_groups
(
    member_id INT(11) NOT NULL ,  
    group_id INT(10) NOT NULL ,  
    PRIMARY KEY (member_id, group_id),  
    FOREIGN KEY (member_id) REFERENCES members(member_id) ON UPDATE CASCADE,  
    FOREIGN KEY (group_id) REFERENCES groups(group_id) ON UPDATE CASCADE
)  ENGINE = InnoDB

这是我从 mysql 管理控制台得到的错误。

谢谢。

您需要在 table 中设置相同的类型。在您的 groups table 中您定义了

`group_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 

而在您的 members_groups table 中是

group_id INT(10) NOT NULL ,

尝试做出像

这样的改变
CREATE TABLE members_groups
(
    member_id INT(11) NOT NULL ,  
    group_id INT(10) unsigned NOT NULL ,  --The datatype should be same as group_id in `groups` table
    PRIMARY KEY (member_id, group_id),  
    FOREIGN KEY (member_id) REFERENCES members(member_id) ON UPDATE CASCADE,  
    FOREIGN KEY (group_id) REFERENCES `groups`(group_id) ON UPDATE CASCADE
)  ENGINE = InnoDB;

SQL FIDDLE DEMO