Je voudrais déposer la clé étrangère dans mon tableau, mais été dans ce message d'erreur
mysql> alter table customers drop foreign key customerid;
ERROR 1025 (HY000): Error on rename of '.\products\customers' to '.\products\#sql2-7ec-a3' (errno: 152)
mysql>
Pour éviter cette erreur en essayant de supprimer une clé étrangère, utilisez le nom de la contrainte plutôt que le nom de la colonne de la clé étrangère.
Quand j'ai essayé
mysql> ALTER TABLE mytable DROP PRIMARY KEY;
J'ai eu une erreur
ERROR 1025 (HY000): Error on rename of '.\database\#sql-454_3' to '.\database\mytable' (errno: 150).
Je l'ai résolu en utilisant:
mysql> ALTER TABLE mytable DROP PRIMARY KEY, ADD PRIMARY KEY (column1,column2,column3);
Quelques liens qui vous aideront.
link 2 [chercher Posté par Alex Blume le 7 novembre 2008 17h09 & Publié par Hector Delgadillo le 21 janvier 2011 16h57]
La solution décrite ici par Chris White a fonctionné pour moi.
Le problème fondamental est que MySQL crée à la fois un index et une clé étrangère. Les deux doivent être supprimés (la clé étrangère d'abord contrairement à ce que Chris a dit).
show create table nom_table;
SHOW CREATE TABLE `table_name`:
| table_name | CREATE TABLE `table_name` (
`id` int(20) unsigned NOT NULL auto_increment,
`key_column` smallint(5) unsigned default '1',
KEY `column_tablein_26440ee6` (`key_column`), <--- shows key name
CONSTRAINT `table_name_ibfk_1` FOREIGN KEY (`key_column`) REFERENCES <--- shows foreign key constraint name
`second_table` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Supprimer la contrainte de clé étrangère:
ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
Supprimer la clé
ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
Cela l'a fait pour moi.
Cela ressemble à un bogue dans la messagerie d'erreur de MySQL. ( http://bugs.mysql.com/bug.php?id=10333 )
Utilisez SHOW CREATE TABLE table_name
pour afficher le nom actuel de la clé étrangère. Il semble que cela puisse être un problème de navigateur de requête mysql lors de la génération de la requête avec une mauvaise orthographe du nom de clé étrangère.
Pour éviter cette erreur en essayant de supprimer une clé étrangère, utilisez le nom de contrainte plutôt que le nom de colonne de la clé étrangère
Vous devriez essayer avec le nom de clé étrangère comme suggéré par Fahim Parkar. En fait, cela ne fonctionne pas toujours non plus.
Dans mon cas, j'ai utilisé le
FOREIGN KEY `fk`(`col1`) REFERENCES `table2`(`col1`)
code pour ajouter le fk par création.
Le problème avec ce code est qu’il n’est pas valide et devrait générer une erreur de syntaxe, mais qu’il a néanmoins ajouté une clé étrangère avec un nom aléatoire.
Quand j'ai ajouté le fk avec la bonne syntaxe:
CONSTRAINT `fk` FOREIGN KEY (`col1`) REFERENCES `table2`(`col1`)
le code suivant l'a laissé tomber correctement:
ALTER TABLE `table1` DROP FOREIGN KEY `fk`
Donc, ce genre d'erreur peut aussi arriver si vous essayez de supprimer une clé étrangère avec un nom invalide. Il est important de visualiser les propriétés de la table avec
SHOW CREATE TABLE `table1`
et vérifiez les noms de clé étrangère si vous obtenez ce type d'erreur.