sql >> Base de Datos >  >> RDS >> Mysql

Cambiar el backend de la base de datos Django de MySql a PostgreSQL

Me cansé de ver este error usando South y sí, ¡cambiar a PostgreSQL lo ha eliminado!

La aplicación mysql2postgres, escrita en Ruby, sugerida en los comentarios anteriores no funcionó para mí (se ejecutaría, mostraría algunos detalles en la pantalla pero no copiaría ninguna fila de datos, para mí). No estoy seguro de por qué. Pero, con mucho gusto, hay una reescritura de Python que funcionó a la perfección (para mí, eventualmente):
http://pypi.python.org/pypi/py-mysql2pgsql

El único error que encontré fue:

Inicialmente, pensé que sería más seguro configurar las tablas en la base de datos de PostgreSQL a través de un syncdb y luego migrar solo los datos. Intenté esto, pero las tablas se migran en orden alfabético y esto viola las restricciones de clave externa para algunas tablas (las filas se relacionan con filas en tablas que aún no se han importado).

Luego probé una migración de estructura + datos. Esto migró bien, pero luego encontré algunos problemas en Django, especialmente en el sitio de administración. Parecía que el script de migración había creado algunas restricciones de tabla diferentes de las que tendría Django.

Resolví esto pirateando el script mysql2pgsql para respetar el orden de las tablas dadas en la configuración de yaml only_tables property... y luego hacer una migración de solo datos de syncdb +. Por prueba y error, mezclé el orden de las tablas para mi migración hasta que todas se importaron correctamente.

ACTUALIZACIÓN:
Se aceptó mi solicitud de extracción para el truco descrito anteriormente, por lo que puede hacerlo ahora desde la versión principal:
https://github.com/philipsoutham/py-mysql2pgsql