sql >> Databáze >  >> RDS >> Mysql

Nelze obnovit zálohu geometrie MySQL 5.7 Chyba

Vypadá to jako MySQL 5.7 je v typech geometrie přísnější než MySQL 5.6 . Data, která byla platná v 5.6 je nyní neplatný v 5.7 .

Toto byla oprava chyby MySQL #76337 , ve verzi MySQL 5.7.8 .

V tomto případě LINESTRING byl ukládán do sloupce typu POINT . To fungovalo téměř deset let, ale ne více. Změna sloupce na typ LINESTRING opravena výše uvedená chyba načítání.

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

Další režimy selhání

Tato chyba se také projevuje na geometrických sloupcích, kde byly schopny přetrvávat NULL geometrie (ale oficiálně nejsou NULL). MySQL IS NULL řekl bych ne null, ale asText( myGeo ) vrátil NULL pod MySQL 5.7 . Export do řetězce v MySQL 5.6 vrátil '' , prázdný řetězec. Tedy '' výstup geometrie z 5.6 byl a neplatný vstup pro 5.7.

Opravou bylo jejich zrušení.

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



  1. SQL přebírá pouze číselné hodnoty z varcharu

  2. ALTER TABLE ADD COLUMN trvá dlouho

  3. Jak vytvořit tabulku v MySQL Workbench pomocí GUI

  4. Jak spustit sadu SQL dotazů ze souboru v PHP?