Изглежда като MySQL 5.7
е по-строг по отношение на типовете геометрия от MySQL 5.6
. Като такива данни, които са били валидни в 5.6 вече е невалиден в 5.7 .
Това беше корекцията на MySQL грешка #76337 , във версия MySQL 5.7.8 .
В този случай, LINESTRING
се съхраняваше в колона от тип POINT
. Това работеше близо десетилетие, но не повече. Промяна на колоната за тип LINESTRING
поправи горната грешка при зареждане.
-- The Fix - run on MySQL 5.6 database before Upgrade/Export
ALTER TABLE routes MODIFY COLUMN route_path LINESTRING;
Други режими на отказ
Този бъг се проявява и в геометрични колони, където те успяха да запазят NULL геометрии (но не са официално NULL). MySQL IS NULL
би казал не null, а asText( myGeo )
върна NULL
под MySQL 5.7 . Експортирането им в низ в MySQL 5.6 върна ''
, празен низ. Така ''
изходът за геометрия от 5.6 беше и невалиден вход за 5.7.
Поправката беше тези да бъдат нулирани.
-- Convert NULL geometries to actual NULL's
UPDATE myTable SET myGeo = NULL WHERE asText(myGeo) IS NULL;