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:
- elimine todo en la carpeta de migraciones a excepción de
__init__.py
. - pasar a mi consola de PostgreSQL y hacer:
DELETE FROM south_migrationhistory WHERE app_name=''my_app'';
- mientras que en la consola de PostgreSQL, suelte todas las tablas asociadas con my_app.
- vuelva a ejecutar
./manage.py makemigrations my_app
- esto genera un archivo0001_initial.py
en mi carpeta de migraciones. - 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.
- 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
- 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
- Actualiza tu db:
python3 manage.py makemigrations
python3 manage.py migrate