441 votes

Comment renommer une colonne de table en MySQL

Comment renommer une colonne de tableau dans un tableau xyz les colonnes sont :

Manufacurerid, name, status, AI, PK, int

Je veux renommer en manufacturerid

J'ai essayé d'utiliser le panneau PHPMyAdmin qui ne fonctionne pas. Il affiche une erreur :

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)

5 votes

Vous essayez de modifier une table qui contient une référence de clé étrangère.

2 votes

752voto

Matt Diamond Points 3920

Lone Ranger est très proche... en fait, vous devez également spécifier le type de données de la colonne renommée. Par exemple :

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

(en remplaçant INT par la définition de votre colonne)

12 votes

Je pense que la colonne contient une clé étrangère pour obtenir l'erreur de la réponse donc vous devez Drop foreign key, alter table, et add foreign key (c'est mieux de faire une sauvegarde d'abord) et vous pouvez le modifier en changeant seulement le nom dans le clic droit sur la table - alter table.

7 votes

Gardez à l'esprit que dans cette solution vous perdez toutes les autres définitions de colonnes telles que la nullité, la valeur par défaut, etc. (voir : stackoverflow.com/questions/8553130/ ).

0 votes

Donc en gros, au lieu de MODIFY column <TYPE> (pour redéfinir une colonne), il s'agit de CHANGE column new_column <TYPE> ?

44voto

dongpf Points 151

L'instruction standard de renommage Mysql est :

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name 
CHANGE [COLUMN] old_col_name new_col_name column_definition 
[FIRST|AFTER col_name]

pour cet exemple :

ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)

Référence : Syntaxe ALTER TABLE de MYSQL 5.1

14voto

Lone Ranger Points 184

EDIT

Vous pouvez renommer les champs en utilisant :

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

1 votes

1064 - Vous avez une erreur dans votre syntaxe SQL ; vérifiez le manuel qui correspond à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser près de '' à la ligne 1

17 votes

Ce serait utile, mais ce n'est pas conforme à la documentation que vous avez citée : "Lorsque vous utilisez CHANGE ou MODIFY, column_definition doit inclure le type de données et tous les attributs qui doivent s'appliquer à la nouvelle colonne [...] Les attributs présents dans la définition initiale mais non spécifiés pour la nouvelle définition ne sont pas reportés. "

0 votes

Il faut que ce soit "ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)".

7voto

Darshan Points 29

Il y a un problème de syntaxe car la syntaxe correcte de la commande alter est ALTER TABLE tablename CHNAGE OldColumnName NewColunmName DATATYPE ;

2voto

MIKE KIM Points 1

Avec MySQL 5.x, vous pouvez utiliser :

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X