Det ser ut som MySQL 5.7
är mer strikt i geometrityper än MySQL 5.6
. Som sådan data som var giltig i 5.6 är nu ogiltig i 5.7 .
Detta var korrigeringen till MySQL-fel #76337 , i release MySQL 5.7.8 .
I det här fallet en LINESTRING
lagrades i en kolumn av typen POINT
. Detta fungerade i nästan ett decennium, men inte mer. Ändra kolumnen till typ LINESTRING
fixade ovanstående laddningsfel.
-- The Fix - run on MySQL 5.6 database before Upgrade/Export
ALTER TABLE routes MODIFY COLUMN route_path LINESTRING;
Andra fellägen
Denna bugg manifesteras också på geometriska kolumner där de kunde bevara NULL-geometrier (men inte officiellt NULL). MySQL IS NULL
skulle inte säga null, utan asText( myGeo )
returnerade NULL
under MySQL 5.7 . Att exportera dessa till en sträng i MySQL 5.6 returnerade ''
, tom sträng. Alltså ''
geometriutgång från 5.6 var och ogiltig ingång för 5.7.
Lösningen var att ta bort dessa.
-- Convert NULL geometries to actual NULL's
UPDATE myTable SET myGeo = NULL WHERE asText(myGeo) IS NULL;