Fehler beim Erstellen des Fremdschlüssels aus der MySQL Workbench


9

Ich versuche, Schemaänderungen von MySQL Workbench mit meiner Datenbank zu synchronisieren. Beim Versuch, einen Fremdschlüssel zu erstellen, wird folgende Fehlermeldung angezeigt:

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

Hier ist die Anweisung, die ausgeführt werden soll:

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

Irgendwelche Ideen, was dieser Fehler bedeutet?

Antworten:


11

Sie erhalten diese Meldung, wenn Sie versuchen, eine Einschränkung mit einem Namen hinzuzufügen, der bereits an einer anderen Stelle verwendet wird.

Laut diesem Beitrag können Sie Ihre Einschränkung folgendermaßen überprüfen:

Wenn die Tabelle, die Sie erstellen möchten, eine Fremdschlüsseleinschränkung enthält und Sie Ihren eigenen Namen für diese Einschränkung angegeben haben, denken Sie daran, dass sie in der Datenbank eindeutig sein muss. Führen Sie diese Abfrage aus, um festzustellen, ob dieser Name irgendwo verwendet wird:

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

Der Fremdschlüssel wurde in dieser Abfrage nicht angezeigt, aber als ich mir die Tabelle ansah, gab es dort einen Index mit demselben Namen. Ich glaube, es ist ein Fehler bei der Synchronisation in MySQL Workbench. Ich habe die neueste Version (5.2.31) heruntergeladen und das Problem ist behoben.
BenV
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.