Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak Dapat Mengembalikan Cadangan Geometri Kesalahan MySQL 5.7

Sepertinya MySQL 5.7 lebih ketat dalam jenis Geometri daripada MySQL 5.6 . Dengan demikian, data yang valid di 5.6 sekarang tidak valid di 5.7 .

Ini adalah perbaikan untuk MySQL Bug #76337 , dalam rilis MySQL 5.7.8 .

Dalam hal ini, sebuah LINESTRING sedang disimpan di kolom tipe POINT . Ini bekerja selama hampir satu dekade, tetapi tidak lebih. Mengubah kolom untuk mengetik LINESTRING memperbaiki kesalahan pemuatan di atas.

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

Mode Kegagalan Lainnya

Bug ini juga bermanifestasi pada kolom geometris di mana mereka dapat mempertahankan geometri NULL (tetapi tidak secara resmi NULL). MySQL IS NULL akan mengatakan bukan nol, tetapi asText( myGeo ) mengembalikan NULL di bawah MySQL 5.7 . Mengekspor ini ke string di MySQL 5.6 mengembalikan '' , string kosong. Jadi '' keluaran geometri dari 5.6 adalah dan masukan tidak valid untuk 5.7.

Cara mengatasinya adalah dengan menghapus ini.

-- 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. Bagaimana Mendapatkan Ukuran Sebenarnya dari Database MySQL?

  2. TypeError:Tidak dapat membaca 'kata sandi' properti yang tidak ditentukan dalam rute masuk

  3. Mysql:variabel tidak dikenal, tidak dapat menjalankan aplikasi mysql apa pun, sepertinya tidak ada hubungannya dengan my.cnf

  4. PostgreSQL vs MySQL, sebuah perbandingan

  5. Penyatuan dan pesanan MySQL dengan bantuan