J'essaye de supprimer une contrainte:
MariaDB [(mydb)]> select * from information_schema.table_constraints WHERE table_name = 'mytable'; +--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+ | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | +--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+ | def | mydb | PRIMARY | mydb | mytable | PRIMARY KEY | | def | mydb | name | mydb | mytable | UNIQUE | | def | mydb | myconstraint | mydb | mytable | FOREIGN KEY | +--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+
Et elle répond par:
ERROR 1091 (42000) at line 6: Can't DROP CONSTRAINT `myconstraint`; check that it exists
Mais la contrainte existe:
USE `mydb`; BEGIN; ALTER TABLE `mydb` DROP CONSTRAINT `myconstraint`; COMMIT;
Qu'est-ce que je fais de mal?
3 Réponses :
Je pense que vous confondez "schéma" (alias "base de données") et "table"): ALTER TABLE ma table ...
Ma contrainte est sur une table. Je peux trouver la contrainte, mais je ne peux pas la laisser tomber.
Essayez USE mydb; ALTER TABLE mytable DROP CONSTRAINT myconstraint;
C'est ce que j'ai dans ma question et ne fonctionne pas. Voir ma réponse pour la solution
Le problème est que MariaDB (MySql?) ne permet pas de supprimer les contraintes de clé étrangère avec la syntaxe DROP CONSTRAINT
. Il doit être déposé comme ceci:
ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;
Ce problème est documenté dans https://jira.mariadb.org/browse/MDEV- 17599 . Il a été corrigé dans les versions 10.2.22 et 10.3.13 (11-02-2019). Je suggère de mettre à jour la version MariaDB ou, comme @volingas l'a écrit, le sintax:
ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;
Double possible de Comment supprimer les contraintes de ma table MySQL?