2008-10-17 37 views
288

MySQL 5.0.45¿Cómo modifico una columna MySQL para permitir NULL?

¿Cuál es la sintaxis para modificar una tabla para permitir una columna a ser nula, alternativamente, lo que está mal con esto:

ALTER mytable MODIFY mycolumn varchar(255) null; 

interpreté el manual como se acaba de ejecutar lo anterior y se recrearía la columna, esta vez permitiendo null. El servidor me dice que tengo errores sintácticos. Simplemente no los veo.

+0

columna no es única ni nada que se le parezca que – zmf

Respuesta

421

desea que el siguiente:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255); 

Las columnas son anulable por defecto. Siempre que la columna no esté declarada UNIQUE o NOT NULL, no debería haber ningún problema.

+9

Hay un caso extremo, que es el tipo 'TIMESTAMP', que según la versión de MySQL y de configuración puede ser' NO null' especificando 'NULL' como lo sugiere @ConroyP es más correcto. –

+0

¡Esto no funcionó para mí! La columna no cambió. Tal vez porque tenía una restricción para otra tabla donde se utilizó la columna (cuando no es nula). – Rocologo

150

Su error de sintaxis es causada por una "mesa" que falta en la consulta

ALTER TABLE mytable MODIFY mycolumn varchar(255) null; 
+14

Esta es realmente la respuesta correcta, mientras que la cláusula NULL no es obligatoria, no hay nada de malo en proporcionarla. La TABLA faltante de la declaración ALTER TABLE era el problema real. – SamStephens

+0

Esta es la respuesta "más correcta". – Xofo

+0

@SamStephens y Xofo: hay una pregunta primaria y secundaria ("alternativamente"). Esta es la respuesta correcta a la pregunta secundaria, mientras que la respuesta aceptada es la respuesta correcta al primario. – jdunk

4

En algunas circunstancias (si es que se obtiene "ERROR 1064 (42000): Usted tiene un error en su sintaxis SQL, .. . ") que tiene que hacer

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

Mi solución:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL 

Por ejemplo:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL; 
-4

Uso: ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

+12

Sería mejor si su respuesta proporcionara un valor adicional además de las otras respuestas. En este caso, su respuesta no proporciona valor adicional, ya que Daniel Spiewak ya publicó esa solución. Si una respuesta anterior fue útil para usted, debe [votarla] (http://stackoverflow.com/help/privileges/vote-up) una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/qué-reputación) –

Cuestiones relacionadas