Błąd podczas tworzenia klucza obcego z MySQL Workbench

9

Próbuję zsynchronizować zmiany schematu z MySQL Workbench do mojej bazy danych. Podczas próby utworzenia klucza obcego pojawia się następujący błąd:

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

Oto oświadczenie, które próbuje wykonać:

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

Wszelkie pomysły, co oznacza ten błąd?

BenV
źródło

Odpowiedzi:

11

Otrzymasz tę wiadomość, jeśli próbujesz dodać ograniczenie o nazwie, która jest już używana gdzie indziej.

Zgodnie z tym postem możesz sprawdzić swoje ograniczenie w następujący sposób:

Jeśli tabela, którą próbujesz utworzyć, zawiera ograniczenie klucza obcego i podałeś własną nazwę dla tego ograniczenia, pamiętaj, że musi on być unikalny w bazie danych. Uruchom tę kwerendę, aby sprawdzić, czy ta nazwa jest gdzieś używana:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;
Am1rr3zA
źródło
Klucz obcy nie pojawił się w tym zapytaniu, ale kiedy spojrzałem na tabelę, był tam indeks o tej samej nazwie. Uważam, że to błąd synchronizacji w MySQL Workbench. Pobrałem najnowszą wersję (5.2.31) i problem zniknął.
BenV