Restablecer migraciones en Django

Vaibhav Vaibhav 30 enero 2023
  1. Restablecer toda la base de datos en Django
  2. Revertir una aplicación de Django a sus antiguas migraciones
Restablecer migraciones en Django

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.

  1. Restablecer toda la base de datos
  2. 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.

  1. 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 de migrations dentro de todas las aplicaciones. Después de eliminar las carpetas de migrations, podemos rehacer las migraciones y migrarlas usando dos comandos; a saber, python manage.py makemigrations y python manage.py migrate.
  2. 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 de migrations y luego rehacer las migraciones y, por último, migrarlas.
  3. Otra opción es usar el comando manage.py de Django para limpiarnos toda la base de datos. El comando es python manage.py flush. Nuevamente, después de usar este comando, tenemos que eliminar todas las carpetas de migrations 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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Django Migration