migrations makemigrations inconsistent force exceptions error delete python database django data-migration schema-migration

python - inconsistent - force makemigrations



¿Cuál es su solución favorita para gestionar migraciones de bases de datos en django? (8)

Además de South, dmigrations, django-evolution y Migratory, pensé que agregaría simplemigrations migraciones como otra herramienta que he visto para automatizar las migraciones de Django.

He usado tres de estos en el pasado, pero ahora hago migraciones a mano. Estoy pensando en probar South nuevamente debido a las últimas características añadidas.

Me gusta bastante el sistema de administración de migración de bases de datos de Rails. No es 100% perfecto, pero cumple su cometido. Django no incluye este sistema de migración de bases de datos (¿todavía?), Pero hay una serie de proyectos de código abierto para hacerlo, como django-evolution y South, por ejemplo.

Entonces, me pregunto, ¿qué solución de administración de migración de base de datos para django prefiere? (una opción por respuesta, por favor)



He estado usando simple-db-migrate

Pros:

  • me permite deshacer las migraciones (IDK si otros también lo hacen).
  • se integra con manage.py
  • todos los que conocen SQL pueden crear una migración
  • no ejecuta una migración dos veces: la aplicación escribe la información de migración (marca de tiempo, consulta, etc.) en una tabla

Contras:

  • si agrega una migración con una marca de tiempo inferior a la última migración instalada, esta migración no se ejecuta
  • Solo MySQL es compatible

Me gusta django-evolution :

pros:

  • diseño limpio
  • no se necesita SQL
  • flexible
  • trivial para instalar
  • fácil de usar

contras:

  • las migraciones no se arreglan en la base de código
  • existe el riesgo de ejecutar accidentalmente una migración dos veces


Solo para señalar que desde 2009, casi todos los proyectos mencionados aquí aparte del sur están muertos. South es el estándar de facto, para bien o para mal.


Usamos Django en el trabajo, y hemos estado usando dmigrations . Si bien tiene sus peculiaridades, ha sido útil hasta ahora. Algunas caracteristicas:

  • Utiliza una tabla en la base de datos para realizar un seguimiento de las migraciones que se han aplicado.
  • Como sabe cuáles se han aplicado, puede migrar hacia arriba y hacia abajo.
  • Se integra con manage.py como un comando.
  • Los scripts de migración individuales son Python, pero si su lógica de migración es SQL puro, dmigrations hace que sea fácil simplemente hacer el SQL y ejecutarlo.

Un problema es que actualmente solo es compatible con MySQL. Sin embargo, uno de nuestros muchachos hace un truco local para soportar PostgreSQL, que usamos. Según recuerdo, el truco no fue tan extenso, por lo que no debería ser terriblemente difícil crearlo para soportar otros RDBMS.