sql >> Databasteknik >  >> RDS >> Mysql

Kan inte återställa Geometry Backup MySQL 5.7-fel

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;



  1. Store_result och get_result för uttalande

  2. MySQL skiftlägeskänslighetstabellnamn på MacOS med skiftlägesokänsligt filsystem

  3. Vad är skillnaden mellan int och heltal i MySQL 5.0?

  4. UPPDATERAD:Bugg orsakar att Microsoft Office 365 Build 2105 bryter åtkomstapplikationer