Restablecer migraciones en Django
- Restablecer toda la base de datos en Django
- Revertir una aplicación de Django a sus antiguas migraciones
Cuando trabajamos con bases de datos, a menudo tenemos que restablecer una base de datos porque la llenamos con datos inútiles. A veces, incluso terminamos configurando una base de datos basada en un esquema de base de datos propenso a errores. A veces, incluso terminamos cambiando la lógica empresarial, que ajusta todo el diseño de la base de datos. Estas situaciones son bastante comunes en el campo de la informática, y se han creado algunas buenas herramientas y comandos para manejarlas.
En Django, si terminamos en una situación así, tenemos que restablecer las migraciones y la base de datos. Al restablecer las migraciones, tenemos algunas opciones en la lista.
- Restablecer toda la base de datos
- Revertir una aplicación de Django a algunas migraciones antiguas
Restablecer toda la base de datos en Django
Cuando tenemos que restablecer toda la base de datos en Django, hay algunas opciones en la lista.
- Si estamos usando la base de datos SQLite predeterminada de Django, podemos eliminar el archivo de base de datos
db.sqlite3
y luego eliminar todas las carpetas demigrations
dentro de todas las aplicaciones. Después de eliminar las carpetas demigrations
, podemos rehacer las migraciones y migrarlas usando dos comandos; a saber,python manage.py makemigrations
ypython manage.py migrate
. - Si estamos usando alguna otra base de datos relacional como PostgreSQL o MySQL, podemos borrar todas las tablas usando una herramienta de administración de base de datos como
pgAdmin
,DBeaver
, etc. o manualmente usando la línea de comandos. O podemos crear una base de datos completamente nueva y luego conectarla a nuestro Proyecto Django. Tenga en cuenta que, para ambos casos, primero se deben eliminar todas las carpetas demigrations
y luego rehacer las migraciones y, por último, migrarlas. - Otra opción es usar el comando
manage.py
de Django para limpiarnos toda la base de datos. El comando espython manage.py flush
. Nuevamente, después de usar este comando, tenemos que eliminar todas las carpetas demigrations
y luego realizar las nuevas migraciones.
Revertir una aplicación de Django a sus antiguas migraciones
Si no tenemos que restablecer toda la base de datos, sino revertir las migraciones para una aplicación Django específica, tenemos dos opciones para eso. Primero, podemos revertir las migraciones actuales de una aplicación Django a algunas migraciones antiguas. En segundo lugar, podemos restablecer todas las migraciones para la aplicación Django.
Si tenemos que volver a migrar desde alguna migración más reciente, digamos 0014, a una migración anterior, digamos 0008, podemos usar los siguientes comandos.
python manage.py migrate AppName 0008
--- OR ---
python manage.py migrate AppName 0008_migration_name
Y, si tenemos que restablecer todas las migraciones para una aplicación Django, podemos usar el siguiente comando.
python manage.py migrate AppName zero
Tenga en cuenta que a veces las migraciones pueden ser irreversibles. Generalmente, esta condición surge cuando se han realizado algunos cambios significativos en los modelos de Django. Cuando intentemos volver a dicha migración, Django generará un IrreversibleError
.