MySQL Workbenchからの外部キーの作成エラー


9

MySQL Workbenchからのスキーマ変更をデータベースに同期しようとしています。外部キーを作成しようとすると、次のエラーが発生します。

Executing SQL script in server
ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121)

実行しようとしているステートメントは次のとおりです。

ALTER TABLE `tomato`.`ing_allergy_ingredient` 
ADD CONSTRAINT `fk_ai_allergy`
FOREIGN KEY (`allergy_id` )
REFERENCES `tomato`.`ing_allergy` (`allergy_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION

このエラーが意味するアイデアはありますか?

回答:


11

別の場所ですでに使用されている名前の制約を追加しようとすると、このメッセージが表示されます。

この投稿によると、次のように制約を確認できます。

作成しようとしているテーブルに外部キー制約が含まれていて、その制約に独自の名前を指定した場合、データベース内で一意である必要があることに注意してください。このクエリを実行して、その名前がどこかで使用されているかどうかを確認します。

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;

このクエリには外部キーは表示されませんでしたが、テーブルを見ると、同じ名前のインデックスがそこにありました。MySQL Workbenchの同期のバグだと思います。最新バージョン(5.2.31)をダウンロードしましたが、問題は解決しました。
BenV
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.