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?

È stato utile?

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top