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 に答える