Comment puis-je laisse tomber « NOT NULL » à partir d'une colonne de MySQL?

StackOverflow https://stackoverflow.com/questions/3000901

  •  25-09-2019
  •  | 
  •  

Question

Un spectacle commande create tableau qui suit:

'columnA' varchar(6) NOT NULL DEFAULT '';

Comment puis-je modifier cette colonne pour que l'on retire pas nul? Je besoin d'être:

'columnA' varchar(6) DEFAULT NULL;

Je pensais que ce qui suit fonctionnerait, mais il n'a pas d'effet:

ALTER TABLE tbl_name MODIFY columnA varchar(6) DEFAULT NULL;
Était-ce utile?

La solution

Essayez ceci:

ALTER TABLE tbl_name MODIFY columnA varchar(6) NULL DEFAULT NULL; 

Autres conseils

Normalement, la réponse de Eric devrait fonctionner:

ALTER TABLE tbl_name MODIFY columnA varchar(6) NULL DEFAULT NULL; 

(Bien que la partie 'NULL NULL DEFAULT' est en option).

Mais comme vous, j'avais une affaire qui vient de rentrer OK sans rien faire. Dans mon cas, il semble être dû au fait que ma clé faisait partie de la clé primaire. Donc, je devais faire ce qui suit:

ALTER TABLE tbl_name DROP PRIMARY KEY;
ALTER TABLE tbl_name MODIFY columnA varchar(6);
ALTER TABLE tbl_name ADD PRIMARY KEY (columnA);

avec cette dernière requête spécifiant quel que soit votre clé primaire est en réalité.

En outre, dans le cas où quelqu'un pense est trop bavard, la requête combinée suivante ne fonctionne pas, même si elle doit être identique:

ALTER TABLE tbl_name DROP PRIMARY KEY, MODIFY columnA varchar(6), ADD PRIMARY KEY (columnA);

Je suppose que cette dernière mysql réécrit requête dans un ordre différent de sorte que la clé primaire existe encore lorsque la modification est effectuée, d'où la nécessité de le casser en trois déclarations.

Pour votre information, c'est sur MySQL 5.1.47, mais je n'ai pas encore trouvé aucun document indiquant pourquoi cela se produit, donc je ne sais pas ce que sont concernés.

Faire le changement (localement) dans phpMyAdmin. Il montrera la requête qu'il utilise pour le changement. Exécutez cette requête dans la production et vous avez terminé.

Vous pouvez utiliser cette stratégie dans un outil graphique pour voir les requêtes qu'il effectue. Personnellement, j'utilise Sequel Pro (pour Mac OS X) au lieu de phpMyAdmin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top