Mysql
 sql >> Database >  >> RDS >> Mysql

Modifica del backend del database Django da MySql a PostgreSQL

Mi sono stancato di vedere questo errore usando South e sì, il passaggio a PostgreSQL lo ha bandito!

L'app mysql2postgres, scritta in Ruby, suggerita nei commenti sopra non ha funzionato per me (verrebbe eseguita, avrebbe prodotto alcuni dettagli sullo schermo ma non avrebbe copiato alcuna riga di dati, per me). Non sono sicuro del perché. Ma volentieri c'è una riscrittura Python che ha funzionato perfettamente (per me, alla fine):
http://pypi.python.org/pypi/py-mysql2pgsql

L'unico problema che ho trovato è stato:

Inizialmente ho pensato che sarebbe stato più sicuro impostare le tabelle nel db PostgreSQL tramite un syncdb e quindi migrare solo i dati. Ho provato questo, ma le tabelle vengono migrate in ordine alfabetico e questo viola i vincoli della chiave esterna per alcune tabelle (le righe si riferiscono a righe nelle tabelle non ancora importate).

Successivamente ho provato una struttura + migrazione dei dati. Questo è migrato bene, ma in seguito ho riscontrato alcuni problemi in Django, in particolare il sito di amministrazione. Sembrava che lo script di migrazione avesse creato alcuni vincoli di tabella diversi da quelli che avrebbe Django.

L'ho risolto hackerando lo script mysql2pgsql per rispettare l'ordine delle tabelle fornito nella configurazione di yaml only_tables proprietà... e quindi eseguire una migrazione syncdb + solo dati. Per tentativi ed errori ho rimescolato l'ordine delle tabelle per la mia migrazione fino a quando non sono state importate tutte correttamente.

AGGIORNAMENTO:
La mia richiesta pull per l'hack descritto sopra è stata accettata, quindi puoi farlo ora dalla versione principale:
https://github.com/philipsoutham/py-mysql2pgsql