Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL 5.7-Fehler „Geometry Backup“ kann nicht wiederhergestellt werden

Es sieht aus wie MySQL 5.7 ist strenger in Geometry-Typen als MySQL 5.6 . Als solche Daten, die gültig waren in 5.6 ist jetzt in 5.7 ungültig .

Dies war die Lösung für MySQL-Fehler #76337 , in der Version MySQL 5.7.8 .

In diesem Fall ein LINESTRING wurde in einer Spalte vom Typ POINT gespeichert . Das funktionierte fast ein Jahrzehnt lang, aber nicht mehr. Ändern der Spalte zum Typ LINESTRING obiger Ladefehler behoben.

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

Andere Fehlermodi

Dieser Fehler manifestiert sich auch bei geometrischen Spalten, wo sie NULL-Geometrien beibehalten konnten (aber nicht offiziell NULL waren). MySQL IS NULL würde nicht null sagen, sondern asText( myGeo ) gab NULL zurück unter MySQL 5.7 . Das Exportieren dieser in eine Zeichenfolge in MySQL 5.6 gab '' zurück , leerer String. Also der '' Geometrieausgabe von 5.6 war und ungültige Eingabe für 5.7.

Die Lösung bestand darin, diese auf Null zu setzen.

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