Errore durante la creazione della chiave esterna da MySQL Workbench
-
16-10-2019 - |
Domanda
Sto cercando di sincronizzare le modifiche dello schema da MySQL Workbench al mio database. Sto ottenendo il seguente errore quando si 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 il comunicato 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
Tutte le idee che cosa questo significa errore?
Soluzione
Si otterrà questo messaggio se si sta cercando di aggiungere un vincolo con un nome che è già utilizzato da qualche altra parte.
In base a questo messaggio è possibile controllare il vincolo in questo modo:
Se la tabella si sta cercando di creare include un vincolo di chiave esterna, e che ci hai fornito il proprio nome per tale vincolo, ricordate che deve essere univoco all'interno del database. Eseguire la 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;