Comment supprimer les contraintes de ma table MySQL?

Je veux supprimer les contraintes de ma table. Ma requête est la suivante:

ALTER TABLE `tbl_magazine_issue` DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users` 

Mais j’ai une erreur:

#1064 – Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à votre version du serveur MySQL pour FK_tbl_magazine_issue_mst_users la FK_tbl_magazine_issue_mst_users à utiliser près de ‘contrainte FK_tbl_magazine_issue_mst_users ‘ à la ligne 1

Mysql a une syntaxe spéciale pour supprimer les contraintes de clé étrangère:

 ALTER TABLE tbl_magazine_issue DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users 

J’ai eu le même problème et j’ai dû résoudre avec ce code:

 ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`; ALTER TABLE `table_name` DROP INDEX `id_name_fk`; 

DROP CONSTRAINT n’existe pas dans MySQL. Dans votre cas, vous pouvez utiliser DROP FOREIGN KEY place.

Si la contrainte n’est pas une clé étrangère, par exemple. un ajouté à l’aide de ‘UNIQUE CONSTRAINT (colA, colB)’ alors c’est un index qui peut être supprimé avec ALTER TABLE ... DROP INDEX ...

Pour append un peu à la réponse de Robert Knight, puisque le titre du message lui-même ne mentionne pas les clés étrangères (et que son code ne contient pas d’échantillons de code complets et que les blocs de code de commentaire ne sont pas affichés). blocs), je vais append ceci pour des contraintes uniques . Chacun de ces travaux pour supprimer la contrainte:

 ALTER TABLE `table_name` DROP KEY `uc_name`; 

ou

 ALTER TABLE `table_name` DROP INDEX `uc_name`; 

Aussi bien, vous pouvez désactiver temporairement tous les contrôles de clé étrangers à partir d’une firebase database mysql: SET FOREIGN_KEY_CHECKS=0; Et pour le SET FOREIGN_KEY_CHECKS=1; : SET FOREIGN_KEY_CHECKS=1;

  1. Aller à la vue de la structure de la table
  2. Vous verrez 2 options en haut a.Table structure b. Vue Relation
  3. Maintenant, cliquez sur Vue Relation , ici vous pouvez déposer votre contrainte de clé étrangère. Vous aurez toutes les relations ici.

Certains ORM ou frameworks utilisent une convention de dénomination différente pour les clés étrangères par FK_[parent table]_[referenced table]_[referencing field] à la valeur par défaut FK_[parent table]_[referenced table]_[referencing field] , car ils peuvent être modifiés.

Laravel utilise par exemple [parent table]_[referencing field]_foreign comme convention de dénomination. Vous pouvez afficher les noms des clés étrangères en utilisant cette requête, comme indiqué ici :

 SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = '' AND REFERENCED_TABLE_NAME = '';

Supprimez ensuite la clé étrangère en exécutant la requête DROP FOREIGN KEY mentionnée précédemment et son nom propre.

Pour ceux qui viennent ici avec MariaDB:

Notez que MariaDB autorise les instructions DROP CONSTRAINT en général, par exemple pour supprimer des contraintes de vérification:

 ALTER TABLE table_name DROP CONSTRAINT constraint_name; 

https://mariadb.com/kb/en/library/alter-table/

cela fonctionnera sur MySQL pour supprimer des contraintes

 alter table tablename drop primary key; alter table tablename drop foreign key;