无法在mysql表中创建约束

时间:2013-08-20 15:03:59

标签: mysql foreign-keys constraints

我有以下表格:

node_sharing | CREATE TABLE `node_sharing` (
  `user_id` int(11) NOT NULL,
  `node_id` int(11) NOT NULL,
  PRIMARY KEY (`user_id`,`node_id`),
  KEY `fk_user_id_idx` (`user_id`),
  KEY `fk_node_id_idx` (`node_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

users | CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `has_ard_access` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我想用约束创建以下外键:

ALTER TABLE `node_sharing`
  ADD CONSTRAINT `fk_user_id`
  FOREIGN KEY (`user_id` )
  REFERENCES `users` (`id` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

并且MySQL返回以下错误:

ERROR 1005 (HY000): Can't create table 'MY_TABLE_NAME.#sql-4d0_218' (errno: 121)

这里有什么问题?

PS node_sharing已被截断,因此没有现有记录可以禁用约束。

1 个答案:

答案 0 :(得分:2)

这是一个重复的键错误。你之前有一张同名的桌子吗?如果是这样,请检查InnoDB内部数据字典。如果没有,请检查是否有另一个具有相同名称的约束。约束名称应该是唯一的。