¿Alguien ha hecho esto? ¿Es un proceso fácil? Estamos pensando en cambiar para las transacciones y porque parece que mysql está "craping out" últimamente.¿Cómo puedo convertir fácilmente una aplicación Django de mySQL a PostgreSQL?
Respuesta
Acabo de utilizar esta herramienta para migrar una aplicación interna y funcionó maravillosamente. https://github.com/maxlapshin/mysql2postgres
Nunca lo he hecho personalmente, pero parece que una combinación de las opciones dumpdata y loaddata de manage.py sería capaz de resolver su problema bastante fácilmente. Es decir, a menos que tenga muchas cosas específicas de la base de datos que viven fuera del ORM, como los procedimientos almacenados.
que funcionan, pero en algún momento es necesario truncar todas las tablas creadas por syncdb – Alexey
dump data carga todo el conjunto de datos en memoery antes de serializarlo - esto es un problema para un gran conjunto de datos. http://www.ofbrooklyn.com/2010/07/18/migrating-django-mysql-postgresql-easy-way/ muestra cómo dividir este proceso para evitar bloquear su servidor. – yarbelk
No lo he hecho tampoco. Primero seguiría esto migration guide, there is a MySql section que debería encargarse de todos sus datos. Entonces django simplemente cambia el mysql a postgre en la configuración. Creo que debería estar bien.
Encontré otra pregunta en stackoverflow que debería ayudar con la conversión de mysql a postgre here.
Puede hacerlo utilizando los serializadores de Django para enviar los datos del formato de MySQL a JSON y luego de vuelta a Postgres. Hay algunas buenas artices en Internet acerca de que:
python manage.py dump.data >> data.json
Crear base de datos y usuario en postrgesql
- Establezca su base de datos recién creada en postrgesql como base de datos predeterminada en la configuración django o use param --datab ase = your_postrgesql_database próximos pasos
Ejecute syncdb para crear tablas.
pitón syncdb [--database = your_postrgesql_database] --noinput
Crear volcado sin datos, la caída de todas las tablas y vaciado de la carga. O trunque todas las tablas (tabla django_content_type con datos que pueden no ser iguales a sus datos anteriores, es el camino a muchos errores). En este paso, necesitamos tablas vacías en postgresql-db.
Cuando se tiene mesas vacías en PostgreSQL-DB sólo tiene que cargar sus datos:
python manage.py loaddata data.json
Y ser divertido!
me escribió un comando de administración de Django que copia una base de datos a otro: https://gist.github.com/mturilin/1ed9763ab4aa98516a7d
necesita añadir tanto la base de datos en la configuración y el uso de este comando:
./manage.py copy_db from_database to_database app1 app2 app3 --delete --ignore-errors
Lo bueno de este comando es que copia recursivamente los objetos dependientes.Por ejemplo, si el modelo tiene 2 claves externas y dos relaciones de Muchos a Muchos, copiará los otros objetos primero para asegurarse de que no recibirá un error de violación de clave externa.
conversión de base de datos MySQL de base de datos PostgreSQL con Django
Primera copia de seguridad de datos de la base de datos MySQL de edad en los accesorios JSON:
$ python manage.py dumpdata contenttypes --indent=4 --natural-foreign > contenttype.json
$ python manage.py dumpdata --exclude contenttypes --indent=4 --natural-foreign > everything_else.json
luego cambiar sus ajustes settings.DATABASES a Postgres.
Crear las tablas en PostgreSQL:
$ python manage.py migrate
Ahora borrar todo el contenido que se hace automáticamente en el emigran (Django ContentTypes, grupos de usuarios, etc):
$ python manage.py sqlflush | ./manage.py dbshell
y ahora se puede con seguridad importación ¡todo, y mantenga sus pk's iguales!
$ python manage.py loaddata contenttype.json
$ python manage.py loaddata everything_else.json
probado con Django == 1.8
Me funcionó a la perfección con Django == 1.11.4 – endur
- 1. Convertir la selección de MySQL a PostgreSQL
- 2. ¿Deberíamos convertir a PostgreSQL de MySQL?
- 3. ¿Convertir el archivo de volcado PostgreSQL a MySQL?
- 4. ¿Cómo puedo convertir una aplicación de consola a .dll?
- 5. ¿Cómo puedo convertir una aplicación de WPF a exe
- 6. ¿Cómo puedo convertir una cadena en un flotante en mysql?
- 7. Migrando de MySQL a PostgreSQL
- 8. ¿Hay una herramienta simple para convertir mysql en sintaxis postgresql?
- 9. Conexión de Django a PostgreSQL: "Error de autenticación de pares"
- 10. MySQL: ¿Cómo convertir una base de datos a solo lectura?
- 11. Convirtiendo una aplicación Ruby on Rails de sqlite a postgresql
- 12. Cómo eliminar fácilmente la relación muchos a muchos con Django
- 13. ¿Cómo convertir una aplicación de rieles a una joya?
- 14. Date_trunc de PostgreSQL en mySQL
- 15. Cassandra o MySQL/PostgreSQL?
- 16. Importación de registros de PostgreSQL a MySQL
- 17. ¿Cómo puedo convertir una vista a Drawable?
- 18. ¿Qué debería saber un usuario de Django al pasar de MySQL a PostgreSQL?
- 19. Cómo convertir un QuerySet Django a una lista
- 20. Cómo convertir una consulta compleja de MySQL a Doctrine2
- 21. Cómo convertir una base de datos MySQL a XML?
- 22. ¿Cómo puedo captar previamente una región de memoria más fácilmente?
- 23. ¿Cómo puedo ofuscar fácilmente una aplicación de Android cuando uso IntelliJ IDEA?
- 24. Django + PostgreSQL: ¿Cómo restablecer la clave principal?
- 25. Cómo volver a utilizar una aplicación reutilizable en Django
- 26. Aplicación para ingeniería inversa DB de MySQL y PostgreSQL?
- 27. ¿Cómo puedo eliminar fácilmente la última coma de una matriz?
- 28. ¿Cómo visualizar fácilmente una matriz?
- 29. PostgreSQL: ¿Es posible convertir enum a entero?
- 30. Convertir tiempo a segundos en PostgreSQL
1) MySQL transacciones de apoyo (InnoDB) 2) ¿Qué le hace pensar que MySQL es "Crapping a cabo" últimamente? –
Por ahora, simplemente empezaremos a obtener los tonos de estos errores: OperationalError: (1205, 'Se agotó el tiempo de espera de bloqueo de la conexión, intente reiniciar la transacción'). Además, usar South con Django a veces duele sin transacciones reales. –
MySQL no admite transacciones de esquema, que pueden causar un dolor de cabeza masivo para migraciones – yarbelk