web-dev-qa-db-fra.com

Comment modifier une colonne MySQL pour autoriser NULL?

MySQL 5.0.45

Quelle est la syntaxe pour modifier une table afin de permettre à une colonne d'être nulle, sinon quel est le problème avec ceci:

ALTER mytable MODIFY mycolumn varchar(255) null;

J'ai interprété le manuel comme s'il suffisait d'exécuter ce qui précède et il recréerait la colonne, autorisant cette fois la valeur null. Le serveur me dit que j'ai des erreurs de syntaxe. Je ne les vois tout simplement pas.

363
zmf

Vous voulez ce qui suit:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

Les colonnes sont nulles par défaut. Tant que la colonne n'est pas déclarée UNIQUE ou NOT NULL, il ne devrait y avoir aucun problème.

546
Daniel Spiewak

Votre erreur de syntaxe est due à l'absence d'une "table" dans la requête.

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
205
ConroyP

Ma solution:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

Par exemple:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
26
Krishnrohit

Dans certaines circonstances (si vous obtenez "ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; ..."), vous devez faire

ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);

Ma solution est la même que @Krishnrohit:

ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;

En fait, la colonne était définie sur NOT NULL mais avec la requête ci-dessus, elle a été remplacée par NULL.

P.S. Je sais que c'est un vieux fil, mais personne ne semble reconnaître que CHANGE est également correct.

2
Hmerman6006

Si la colonne est un double

      ALTER TABLE `tablename` CHANGE `column_name` `column_name` DOUBLE NULL; 
0
levis