Het ziet eruit als MySQL 5.7
is strenger in geometrietypes dan MySQL 5.6
. Als zodanig zijn gegevens die geldig waren in 5.6 is nu ongeldig in 5.7 .
Dit was de oplossing voor MySQL-bug #76337 , in release MySQL 5.7.8 .
In dit geval een LINESTRING
werd opgeslagen in een kolom van het type POINT
. Dit werkte bijna een decennium, maar niet meer. De kolom wijzigen om LINESTRING
te typen de bovenstaande laadfout verholpen.
-- The Fix - run on MySQL 5.6 database before Upgrade/Export
ALTER TABLE routes MODIFY COLUMN route_path LINESTRING;
Andere storingsmodi
Deze bug manifesteerde zich ook op geometrische kolommen waar ze NULL-geometrieën konden behouden (maar niet officieel NULL waren). MySQL IS NULL
zou zeggen niet null, maar asText( myGeo )
NULL
geretourneerd onder MySQL 5.7 . Het exporteren van deze naar een string in MySQL 5.6 gaf ''
, lege tekenreeks. Dus de ''
geometrie-uitvoer van 5.6 was en ongeldige invoer voor 5.7.
De oplossing was om deze op nul te zetten.
-- Convert NULL geometries to actual NULL's
UPDATE myTable SET myGeo = NULL WHERE asText(myGeo) IS NULL;