MySQL外键错误1005

时间:2013-12-30 10:43:15

标签: mysql sql innodb

当我尝试创建表格时出现此错误:Can't create table users_groups (errno: 150)

我的剧本:

CREATE TABLE `users_groups` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `group_id` mediumint(8) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_users_groups_users1_idx` (`user_id`),
  KEY `fk_users_groups_groups1_idx` (`group_id`),
  CONSTRAINT `uc_users_groups` UNIQUE (`user_id`, `group_id`),
  CONSTRAINT `fk_users_groups_users1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
  CONSTRAINT `fk_users_groups_groups1` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 个答案:

答案 0 :(得分:1)

错误150与外键的定义有关。

你没有提到MySQL版本,但这里有几件事需要检查:

  • 表应该存在,并且它们的存储引擎都应该是InnoDB
  • 引用的列应该存在
  • 引用列的
  • 索引应存在于引用的表中
  • 索引的定义(包括列顺序)应该与外键的定义相匹配
  • 引用列的数据类型应相同(包括长度,空值等)

MySQL的文档说明可以在错误150之后使用“SHOW ENGINE INNODB STATUS”命令来获取有关错误本身的更多信息。我建议你试一试。在输出中,搜索“最新的外键错误”部分。