Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка MySQL 5.7 при архивиране на геометрията не може да се възстанови

Изглежда като 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсенето показва всички продукти

  2. LIMIT ключова дума в MySQL с подготвено изявление

  3. Добавяне на допълнителна стойност на колона с INSERT ... SELECT в MySQL

  4. предотвратяване на изтриване * от таблицата, освен ако не е посочен първичен ключ

  5. Трудно SQL изявление над 3 таблици