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

Mengubah backend basis data Django dari MySql ke PostgreSQL

Saya bosan melihat kesalahan ini menggunakan Selatan dan ya, beralih ke PostgreSQL telah menghapusnya!

Aplikasi mysql2postgres, ditulis dalam Ruby, disarankan dalam komentar di atas tidak berfungsi untuk saya (itu akan berjalan, menampilkan beberapa detail ke layar tetapi tidak menyalin baris data apa pun, untuk saya). Tidak yakin mengapa. Tapi untungnya ada penulisan ulang Python yang bekerja dengan sempurna (untuk saya, akhirnya):
http://pypi.python.org/pypi/py-mysql2pgsql

Satu-satunya gotcha yang saya temukan adalah:

Awalnya saya pikir akan lebih aman untuk mengatur tabel di db PostgreSQL melalui syncdb dan kemudian memigrasikan data saja. Saya mencoba ini, tetapi tabel dimigrasikan dalam urutan abjad dan ini melanggar batasan kunci asing untuk beberapa tabel (baris berhubungan dengan baris dalam tabel yang belum diimpor).

Saya selanjutnya mencoba migrasi struktur+data. Ini bermigrasi dengan baik, tetapi saya menemui beberapa masalah di Django setelah itu, terutama situs admin. Sepertinya skrip migrasi telah membuat beberapa batasan tabel yang berbeda dari apa yang akan dimiliki Django.

Saya memecahkan ini dengan meretas skrip mysql2pgsql untuk menghormati urutan tabel yang diberikan dalam konfigurasi yaml only_tables properti... dan kemudian melakukan migrasi syncdb + hanya data. Dengan coba-coba saya mengacak-acak urutan tabel untuk migrasi saya sampai semuanya berhasil diimpor.

PEMBARUAN:
Permintaan penarikan saya untuk peretasan yang dijelaskan di atas telah diterima sehingga Anda dapat melakukannya sekarang dari versi utama:
https://github.com/philipsoutham/py-mysql2pgsql




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql terlalu lama untuk menyisipkan baris

  2. Bagaimana cara membuat partisi untuk setiap bulan di tahun ini

  3. Menghitung nilai yang tidak bersebelahan

  4. Permintaan Mysql Dateiff

  5. Bagaimana cara mengubah kata sandi akun root MySQL di CentOS7?