Más

No se puede agregar la columna PUNTO NO NULO a la tabla MySQL


Recientemente actualicé a MySQL 5.7.9 y estoy usando MyISAM para mi motor de tabla.

Añadiendo una nueva columna de PUNTO así:

ALTERAR LA TABLA  AÑADIR PUNTO de centroide NO NULO;

da este error:

ERROR 1138 (22004): uso no válido del valor NULL

Puedo crear la columna sinNO NULOpero luego no puedo crear un índice espacial en la columna. Esto funcionó para mí en MySQL 5.6, y no veo nada relevante en los documentos.


el problema era: no se puede crear una columna no nula en una tabla con filas existentes sin proporcionar un valor predeterminado (no pude hacer esto).

la secuencia correcta:

  1. alterar la mesa agregar un punto de centroide de columna
    (agregue la columna, sin restricción)
  2. actualizar establecer centroide = ST_Centroid (forma)
    (es decir, rellene la columna con valores)
  3. alterar la mesa modificar el punto centroide no nulo
    (agregue la restricción)

Esperaba usar columnas generadas para solucionar esto:

alterar tabla apb agregar columna geom PUNTO AS (PUNTO (lat, lon)) ALMACENADO NO NULO;

pero obtiene el mismo error. Esta lo hace trabajo para columnas aritméticas simples:

alterar tabla apb agregar columna total int as (lat + lon) ALMACENADO NO NULO;

Sin embargo, puede usar la sintaxis anterior en el momento de la creación de la tabla y luego la carga masiva. La regla de generación significa que aún ha evitado tres dolorosamente lentos pasos de agregar / actualizar / modificar (no nulos).