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