Bonjour, dans mon projet en symfony, après avoir ajouté la propriété média à mon entité topo en relation ManyToOne à l’entité Topo, j’ai fais les migrations et pour
php bin/console doctrine:migrations:migrate
j’ai eu :
An exception occurred while executing 'ALTER TABLE media ADD topo_id INT NOT NULL':
SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'topo_id'
Quelqu’un m’a sugérer de faire:
php bin/console doctrine:query:sql "ALTER TABLE media DROP topo_id"
php bin/console d:m:m
Mais j’ai :
SQLSTATE[HY000]: General error: 1553 Cannot drop index 'IDX_6A2CA10C7F7E8D71': needed in a foreign key co
nstraint
D’après ce que j’ai compris il faut également supprimer la clé étrangère et la remettre après ce que j e n’ai jamais fait auparavant. Je ne sais si ca risque de péter tout mon site? Sur le stackoverflow ils disent de faire
ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1 ; donc de faire
ALTER TABLE media DROP FOREIGN KEY topo_ibfk_1
puis de la remettre après avec :
ALTER TABLE media ADD CONSTRAINT media_ibfk_1 FOREIGN KEY (AID) REFERENCES media_a (ID) ON DELETE CASCADE
ou quelque chose comme ca. Ou bien, selon une autre methode, il fautdait faire comme suit
ALTER TABLE nom_table.
ADD [CONSTRAINT fk_col_ref] -- On donne un nom à la clé (facultatif)
FOREIGN KEY colonne -- La colonne sur laquelle on ajoute la clé
REFERENCES table_ref(col_ref); -- La table et la colonne de référence.
Si je comprends bien dans media j’ai 2 clés secondaires ou étrangères topo_id et site_id d’ailleur et il faut que je supprime et remette celle qui me gène, topo_id. Mais j’ai peur que ca casse mon site… non? Qu’en pensez-vous? Merci.