sql >> Base de Datos >  >> RDS >> Mysql

No se puede restaurar la copia de seguridad de geometría MySQL 5.7 Error

Se parece a MySQL 5.7 es más estricto en tipos de geometría que MySQL 5.6 . Como tal, los datos que eran válidos en 5.6 ahora no es válido en 5.7 .

Esta fue la solución al Error de MySQL #76337 , en la versión MySQL 5.7.8 .

En este caso, un LINESTRING se estaba almacenando en una columna de tipo POINT . Esto funcionó durante casi una década, pero no más. Cambiar la columna para escribir LINESTRING corrigió el error de carga anterior.

-- The Fix - run on MySQL 5.6 database before Upgrade/Export
ALTER TABLE routes MODIFY COLUMN route_path LINESTRING;

Otros modos de falla

Este error también se manifiesta en columnas geométricas donde pudieron persistir geometrías NULL (pero no siendo oficialmente NULL). MySQL IS NULL diría no nulo, pero asText( myGeo ) devolvió NULL bajo MySQL 5.7 . Exportarlos a una cadena en MySQL 5.6 devolvió '' , cuerda vacía. Así el '' la salida de geometría de 5.6 era una entrada no válida para 5.7.

La solución fue anularlos.

-- Convert NULL geometries to actual NULL's
UPDATE myTable SET myGeo = NULL WHERE asText(myGeo) IS NULL;