migrations makemigrations inconsistent force exceptions detected data createsuperuser changes django database-migration django-south django-1.7 django-migrations

makemigrations - migraciones de django 1.7: ¿cómo borro todas las migraciones y vuelvo a empezar desde el principio?



django rollback migration (2)

Así que estoy iterando rápidamente en una aplicación django en este momento y estoy constantemente ajustando models.py. En el transcurso de un día o dos de programación y prueba genero un par de docenas de archivos de migración. Algunas veces realmente rompo el esquema y lo vuelvo a hacer por completo. Esto hace que el proceso de migración se queje mucho sobre los valores predeterminados y nulos, y así sucesivamente. Si es posible, solo me gustaría borrar todo el material de migración y reiniciar las migraciones ahora que finalmente sé lo que estoy haciendo. Mi enfoque hasta ahora ha sido el siguiente:

  1. elimine todo en la carpeta de migraciones a excepción de __init__.py .
  2. pasar a mi consola de PostgreSQL y hacer: DELETE FROM south_migrationhistory WHERE app_name=''my_app'';
  3. mientras que en la consola de PostgreSQL, suelte todas las tablas asociadas con my_app.
  4. vuelva a ejecutar ./manage.py makemigrations my_app - esto genera un archivo 0001_initial.py en mi carpeta de migraciones.
  5. Ejecute ./manage migrate my_app : espero que este comando vuelva a generar todas mis tablas, pero en su lugar dice: "No hay migraciones para aplicar".

¿Lo que da?

Además, ¿la tabla de base de datos de south_migrationhistory aún está en juego ahora que he abandonado South y cambiado a Django 1.7?

Gracias.


Por lo tanto, el plan paso a paso que describí en mi pregunta sí funciona, pero en lugar de eliminar filas de la tabla de la base de datos south_migrationhistory , tuve que eliminar filas de la tabla de la base de datos django_migrations .

El comando es: DELETE FROM django_migrations WHERE app=''my_app''

Una vez hecho esto, podrá volver a ejecutar sus migraciones desde cero.


Solo quería poner todos los pasos en un formato de comando:

NOTA: Los siguientes comandos son bastante destructivos, es un medio para start from scratch como lo hizo el OP.

Después de un comentario de mikeb , pensé en agregar esta línea:

PRE - VERIFICA QUÉ ARCHIVOS DEBES ELIMINAR

find . -path *migrations* -name "*.py" -not -path "*__init__*"

Luego, ajuste el comando en el paso 1 a uno que funcione para su entorno de desarrollo.

  1. eliminar todas las migraciones de todas las aplicaciones:

find . -path *migrations* -name "*.py" -not -path "*__init__*" -exec rm {} /; # make sure to be in your projects path

  1. recrear toda la base de datos:

sudo -u postgres bash -c "psql -c /"DROP DATABASE rootedin;/"" sudo -u postgres bash -c "psql -c /"CREATE DATABASE rootedin;/"" sudo -u postgres bash -c "psql -c /"GRANT ALL PRIVILEGES ON DATABASE rootedin to vagrant;/"" # vagrant is my current user

  1. Actualiza tu db:

python3 manage.py makemigrations python3 manage.py migrate