Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível restaurar o erro MySQL 5.7 de backup de geometria


Parece MySQL 5.7 é mais estrito em tipos de geometria do que MySQL 5.6 . Assim, os dados que eram válidos em 5.6 agora é inválido em 5.7 .

Esta foi a correção para MySQL Bug #76337 , na versão MySQL 5.7.8 .

Nesse caso, um LINESTRING estava sendo armazenado em uma coluna do tipo POINT . Isso funcionou por quase uma década, mas não mais. Alterando a coluna para digitar LINESTRING corrigiu o erro de carregamento acima.
-- The Fix - run on MySQL 5.6 database before Upgrade/Export
ALTER TABLE routes MODIFY COLUMN route_path LINESTRING;

Outros modos de falha

Este bug também se manifesta em colunas geométricas onde elas foram capazes de persistir geometrias NULL (mas não sendo oficialmente NULL). MySQL IS NULL não diria nulo, mas asText( myGeo ) retornou NULL em MySQL 5.7 . Exportando-os para uma string no MySQL 5.6 retornou '' , cadeia vazia. Assim, o '' a saída de geometria de 5.6 era e entrada inválida para 5.7.

A correção foi anular isso.
-- Convert NULL geometries to actual NULL's
UPDATE myTable SET myGeo = NULL WHERE asText(myGeo) IS NULL;