0

我有以下表格:

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)

这里有什么问题?

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

4

1 回答 1

2

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

于 2013-08-20T15:16:46.307 回答