Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Alterando o back-end do banco de dados Django de MySql para PostgreSQL


Cansei de ver esse erro usando o South e sim, mudar para o PostgreSQL o baniu!

O aplicativo mysql2postgres, escrito em Ruby, sugerido nos comentários acima não funcionou para mim (ele seria executado, exibia alguns detalhes na tela, mas não copiava nenhuma linha de dados, para mim). Não tenho certeza por quê. Mas felizmente há uma reescrita em Python que funcionou perfeitamente (para mim, eventualmente):
http://pypi.python.org/pypi/py-mysql2pgsql

A única pegadinha que encontrei foi:

Inicialmente pensei que seria mais seguro configurar as tabelas no banco de dados PostgreSQL por meio de um syncdb e depois migrar apenas os dados. Eu tentei isso, mas as tabelas são migradas em ordem alfabética e isso viola as restrições de chave estrangeira para algumas tabelas (linhas relacionadas a linhas em tabelas ainda não importadas).

Em seguida, tentei uma migração de estrutura + dados. Isso migrou bem, mas encontrei alguns problemas no Django depois, especialmente no site de administração. Parecia que o script de migração havia criado algumas restrições de tabela diferentes do que o Django teria.

Resolvi isso hackeando o script mysql2pgsql para respeitar a ordem das tabelas fornecidas na configuração do yaml only_tables propriedade ... e, em seguida, fazendo uma migração syncdb + somente dados. Por tentativa e erro, embaralhei a ordem das tabelas para minha migração até que todas fossem importadas com sucesso.

ATUALIZAÇÃO:
Minha solicitação de pull para o hack descrito acima foi aceita, então você pode fazer isso agora na versão principal:
https://github.com/philipsoutham/py-mysql2pgsql