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

Zmiana backendu bazy danych Django z MySql na PostgreSQL

Zmęczył mnie widok tego błędu przy użyciu South i tak, przejście na PostgreSQL wyeliminowało go!

Aplikacja mysql2postgres, napisana w Ruby, sugerowana w powyższych komentarzach, nie działała dla mnie (działałaby, wyświetlała pewne szczegóły na ekranie, ale nie kopiowała żadnych wierszy danych dla mnie). Nie pewny dlaczego. Ale na szczęście istnieje przeróbka Pythona, która działała bezbłędnie (w końcu dla mnie):
http://pypi.python.org/pypi/py-mysql2pgsql

Jedyny błąd, jaki znalazłem, to:

Początkowo myślałem, że najbezpieczniej będzie skonfigurować tabele w bazie danych PostgreSQL za pomocą syncdb, a następnie przenieść tylko dane. Próbowałem tego, ale tabele są migrowane w kolejności alfabetycznej, co narusza ograniczenia kluczy obcych dla niektórych tabel (wiersze odnoszą się do wierszy w tabelach, które nie zostały jeszcze zaimportowane).

Następnie wypróbowałem migrację struktury + danych. To migrowało dobrze, ale później napotkałem pewne problemy w Django, zwłaszcza ze stroną administracyjną. Wyglądało na to, że skrypt migracji stworzył kilka innych ograniczeń tabeli niż to, które miałby Django.

Rozwiązałem to, zhakując skrypt mysql2pgsql, aby respektował kolejność tabel podaną w konfiguracji yaml only_tables właściwość... a następnie przeprowadzam migrację syncdb + tylko do danych. Metodą prób i błędów zmieniałem kolejność tabel dla mojej migracji, aż wszystkie zostały pomyślnie zaimportowane.

AKTUALIZACJA:
Moje żądanie ściągnięcia dla opisanego powyżej włamania zostało zaakceptowane, więc możesz to zrobić teraz z wersji głównej:
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. Uprawnienia użytkownika MySQL na współdzielonych serwerach

  2. Wprowadzenie nowej kolumny dla sumy z poprzedniego miesiąca

  3. mysql SORTUJ WEDŁUG ilości unikalnych dopasowań słów

  4. Instrukcja MySQL If Date?

  5. Jak obsłużyć zbyt wiele jednoczesnych połączeń nawet po wykorzystaniu puli połączeń?