Recibí el siguiente error al intentar alterar el tipo de datos de una columna y establecer un nuevo valor predeterminado:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
ERROR 1064 (42000): tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta que se debe usar cerca de 'VARCHAR (255) NOT NULL SET DEFAULT' {} '' en la línea 1
Respuestas:
Una segunda posibilidad que hace lo mismo (gracias a juergen_d):
fuente
column
es opcional. Podrías usarALTER TABLE foobar_data MODIFY col VARCHAR(255) NOT NULL DEFAULT '{}';
oALTER TABLE foobar_data CHANGE col col VARCHAR(255) NOT NULL DEFAULT '{}';
y el resultado será el mismo.{}
.col
correcto escribir dos s al lado del otro? (como estecol col
)DEFAULT
valor. Esto procesará todas las filas de la tabla por nada (muy largo en tablas enormes). Utilice en su lugarALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT <value>
que es instantáneo.Como seguimiento, si solo desea establecer un valor predeterminado, puede estar seguro de que puede usar la sintaxis ALTER .. SET. Simplemente no pongas todas las demás cosas allí. Si va a incluir el resto de la definición de columna, use la sintaxis MODIFICAR o CAMBIAR según la respuesta aceptada.
De todos modos, la sintaxis ALTER para configurar una columna por defecto, (ya que eso era lo que estaba buscando cuando vine aquí):
Para el cual 'literal' también podría ser un número (por ejemplo
...SET DEFAULT 0
). No lo he probado,...SET DEFAULT CURRENT_TIMESTAMP
pero ¿por qué no eh?fuente
ALTER TABLE table_name MODIFY COLUMN column_name TIMESTAMP NOT NULL DEFAULT current_timestamp;
DEFAULT
valor.NOW()
ocurrent_timestamp()
@Malaise @NereisSi desea agregar el valor predeterminado para la columna ya creada, esto funciona para mí:
fuente
Para DEFAULT CURRENT_TIMESTAMP:
Tenga en cuenta la declaración de doble nombre de columna
Eliminando DEFAULT CURRENT_TIMESTAMP:
fuente
La respuesta aceptada funciona bien.
En caso de uso no válido del error de valor NULL , en los valores NULL , actualice todos los valores nulos al valor predeterminado en esa columna y luego intente hacer la modificación.
fuente
En caso de que lo anterior no funcione para usted (es decir: está trabajando con un nuevo SQL o Azure ) intente lo siguiente:
1) descarte la restricción de columna existente (si existe):
2) crea uno nuevo:
fuente
Prueba esto
Me gusta esto
fuente