Errore durante la creazione della chiave esterna da MySQL Workbench


9

Sto cercando di sincronizzare le modifiche dello schema da MySQL Workbench al mio database. Ricevo il seguente errore quando tenta di creare una chiave esterna:

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

Ecco la dichiarazione che sta cercando di eseguire:

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

Qualche idea su cosa significhi questo errore?

Risposte:


11

Riceverai questo messaggio se stai cercando di aggiungere un vincolo con un nome che è già stato utilizzato da qualche altra parte.

Secondo questo post puoi controllare il tuo vincolo in questo modo:

Se la tabella che stai tentando di creare include un vincolo di chiave esterna e hai fornito il tuo nome per quel vincolo, ricorda che deve essere univoco all'interno del database. Esegui questa query per vedere se quel nome è in uso da qualche parte:

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

La chiave esterna non è stata mostrata in questa query, ma quando ho guardato la tabella c'era un indice lì con lo stesso nome. Credo che sia un bug con la sincronizzazione in MySQL Workbench. Ho scaricato l'ultima versione (5.2.31) e il problema è scomparso.
BenV,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.