sql >> Databasteknik >  >> RDS >> Mysql

Ändra Django databas backend från MySql till PostgreSQL

Jag blev trött på att se det här felet när jag använde South och ja, byte till PostgreSQL har förvisat det!

Mysql2postgres-appen, skriven i Ruby, föreslog i kommentarerna ovan fungerade inte för mig (den skulle köras, mata ut några detaljer till skärmen men inte kopiera några rader med data, för mig). Inte säker på varför. Men det finns gärna en Python-omskrivning av den som fungerade felfritt (för mig, så småningom):
http://pypi.python.org/pypi/py-mysql2pgsql

Det enda jag hittade var:

Till en början trodde jag att det skulle vara säkrast att ställa in tabellerna i PostgreSQL-db via en syncdb och sedan bara migrera data. Jag försökte detta, men tabellerna migreras över i alfabetisk ordning och detta bryter mot begränsningarna för främmande nyckel för vissa tabeller (rader hänför sig till rader i tabeller som ännu inte har importerats).

Jag provade sedan en struktur+datamigrering. Detta migrerade bra, men jag stötte på några problem i Django efteråt, särskilt adminwebbplatsen. Det verkade som om migreringsskriptet hade skapat några andra tabellbegränsningar än vad Django skulle ha.

Jag löste detta genom att hacka mysql2pgsql-skriptet för att respektera tabellordningen i yaml-konfigurationen only_tables egenskap... och gör sedan en migrering av syncdb + endast data. Genom försök och misstag blandade jag mig runt ordningsföljden av tabellerna för min migrering tills de alla importerades framgångsrikt.

UPPDATERING:
Min pull-begäran för hacket som beskrivs ovan accepterades så du kan göra detta nu från huvudversionen:
https://github.com/philipsoutham/py-mysql2pgsql




  1. Hur man kör en lagrad procedur i C#-programmet

  2. Hur ser man loggfiler i MySQL?

  3. Jag är förvirrad över samtidiga MySQL-anslutningar

  4. Upprepade kalenderhändelser och lite avslutande matematik