Unavilo mě vidět tuto chybu pomocí South a ano, přechod na PostgreSQL to vyřadil!
Aplikace mysql2postgres napsaná v Ruby, navržená v komentářích výše, pro mě nefungovala (spustila by se, odeslala některé podrobnosti na obrazovku, ale nezkopírovala žádné řádky dat). Nevím proč. Ale rád, že existuje přepsání Pythonu, které fungovalo bezchybně (pro mě nakonec):
http://pypi.python.org/pypi/py-mysql2pgsql
Jediný problém, který jsem našel, byl:
Původně jsem si myslel, že by bylo nejbezpečnější nastavit tabulky v PostgreSQL db přes syncdb a poté migrovat pouze data. Zkoušel jsem to, ale tabulky jsou migrovány v abecedním pořadí, což porušuje omezení cizích klíčů pro některé tabulky (řádky se týkají řádků v tabulkách, které ještě nebyly importovány).
Dále jsem zkusil migraci struktury + dat. To migrovalo dobře, ale poté jsem narazil na nějaké problémy v Django, zejména na stránce správce. Zdálo se, že migrační skript vytvořil nějaká jiná omezení tabulky, než jaké by měl Django.
Vyřešil jsem to hacknutím skriptu mysql2pgsql, aby respektoval pořadí tabulek zadané v konfiguraci yaml only_tables
vlastnost... a poté provést migraci syncdb + pouze data. Pokusem a omylem jsem proházel pořadím tabulek pro migraci, dokud se všechny úspěšně nenaimportovaly.
AKTUALIZACE:
Můj požadavek na stažení výše popsaného hacku byl přijat, takže to můžete udělat nyní z hlavní verze:
https://github.com/philipsoutham/py-mysql2pgsql