sql >> Databáze >  >> RDS >> Mysql

Změna backendu databáze Django z MySql na PostgreSQL

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




  1. ImportError:Žádný modul s názvem mysql.connector nepoužívá Python2

  2. Proč MySQL používá nesprávný index?

  3. Přejmenujte sloupec SQL Server 2008

  4. Existuje způsob, jak nainstalovat javu na Oracle 11g XE?