Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd nie można przywrócić kopii zapasowej geometrii MySQL 5.7

Wygląda jak MySQL 5.7 jest bardziej rygorystyczny w typach geometrii niż MySQL 5.6 . W związku z tym dane, które były prawidłowe w 5.6 jest teraz nieprawidłowy w 5.7 .

To była poprawka Błąd MySQL #76337 , w wydaniu MySQL 5.7.8 .

W tym przypadku LINESTRING był przechowywany w kolumnie typu POINT . Działało to przez prawie dekadę, ale nie więcej. Zmiana kolumny na LINESTRING naprawiono powyższy błąd ładowania.

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

Inne tryby awarii

Ten błąd pojawia się również w kolumnach geometrycznych, w których były w stanie zachować geometrie NULL (ale oficjalnie nie są NULL). MySQL IS NULL powie nie null, ale asText( myGeo ) zwrócono NULL pod MySQL 5.7 . Wyeksportowanie ich do ciągu w MySQL 5.6 zwróciło '' , pusta struna. Zatem '' dane wyjściowe geometrii z 5.6 były i nieprawidłowe dane wejściowe dla 5.7.

Rozwiązaniem było ich zerowanie.

-- 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. Jak wyłączyć SHOW OSTRZEŻENIA w trybie hibernacji?

  2. laravel errno 150 ograniczenie klucza obcego jest nieprawidłowo utworzone

  3. Czy php może przeszukiwać wyniki poprzedniego zapytania?

  4. Jak sprawić, by aplikacja na Androida komunikowała się z zewnętrzną bazą danych MySQL?

  5. Moje oświadczenie PDO nie działa