Kesalahan membuat kunci asing dari MySQL Workbench

9

Saya mencoba menyinkronkan perubahan skema dari MySQL Workbench ke database saya. Saya mendapatkan kesalahan berikut ketika mencoba membuat kunci asing:

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

Inilah pernyataan yang ingin dieksekusi:

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

Adakah gagasan apa arti kesalahan ini?

BenV
sumber

Jawaban:

11

Anda akan mendapatkan pesan ini jika Anda mencoba menambahkan batasan dengan nama yang sudah digunakan di tempat lain.

Menurut posting ini Anda dapat memeriksa batasan Anda seperti ini:

Jika tabel yang Anda coba buat menyertakan batasan kunci asing, dan Anda telah memberikan nama Anda sendiri untuk kendala itu, ingatlah bahwa itu harus unik dalam database. Jalankan kueri ini untuk melihat apakah nama itu digunakan di suatu tempat:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;
Am1rr3zA
sumber
Kunci asing tidak muncul dalam kueri ini, tetapi ketika saya melihat tabel ada indeks di sana dengan nama yang sama. Saya percaya ini adalah bug dengan sinkronisasi di MySQL Workbench. Saya mengunduh versi terbaru (5.2.31) dan masalahnya hilang.
BenV