Ripristina migrazioni in Django

Vaibhav Vaibhav 29 giugno 2021
  1. Reimposta l’intero database in Django
  2. Ripristina un’app Django alle sue vecchie migrazioni
Ripristina migrazioni in Django

Quando lavoriamo con i database, spesso dobbiamo reimpostare un database perché lo riempiamo di dati inutili. A volte, finiamo persino per configurare un database basato su uno schema di database soggetto a errori. A volte, finiamo anche per cambiare la logica di business, che regola l’intero design del database. Queste situazioni sono piuttosto comuni nel campo dell’informatica e sono stati costruiti alcuni buoni strumenti e comandi per gestirle.

In Django, se finiamo in una situazione del genere, dobbiamo ripristinare le migrazioni e il database. Quando si ripristinano le migrazioni, abbiamo alcune opzioni nella lista.

  1. Reimposta l’intero database
  2. Ripristina un’app Django su alcune vecchie migrazioni

Reimposta l’intero database in Django

Quando dobbiamo ripristinare l’intero database in Django, ci sono alcune opzioni nella lista.

  1. Se stiamo utilizzando il database SQLite predefinito di Django, possiamo eliminare il file di database db.sqlite3 e quindi eliminare tutte le cartelle migrations all’interno di tutte le app. Dopo aver cancellato le cartelle migrations, possiamo rifare le migrazioni e migrarle utilizzando due comandi; vale a dire, python manage.py makemigrations e python manage.py migrate.
  2. Se stiamo utilizzando un altro database relazionale come PostgreSQL o MySQL, possiamo eliminare tutte le tabelle utilizzando uno strumento di gestione del database come pgAdmin, DBeaver, ecc. o manualmente utilizzando la riga di comando. Oppure, possiamo creare un database completamente nuovo e poi collegarlo al nostro Django Project. Si noti che, in entrambi i casi, è necessario prima eliminare tutte le cartelle migrations e poi rifare le migrazioni e, infine, migrarle.
  3. Un’altra opzione è usare il comando manage.py di Django per cancellare l’intero database per noi. Il comando è python manage.py flush. Anche in questo caso, dopo aver utilizzato questo comando, dobbiamo eliminare tutte le cartelle migrations e quindi effettuare le nuove migrazioni.

Ripristina un’app Django alle sue vecchie migrazioni

Se non dobbiamo ripristinare l’intero database ma ripristinare le migrazioni per un’app Django specifica, abbiamo due opzioni. Innanzitutto, possiamo invertire le migrazioni correnti di un’app Django in alcune vecchie migrazioni. In secondo luogo, possiamo ripristinare tutte le migrazioni per l’app Django.

Se dobbiamo migrare indietro da una migrazione più recente, diciamo 0014, a una migrazione precedente, diciamo 0008, possiamo usare i seguenti comandi.

python manage.py migrate AppName 0008
            --- OR ---
python manage.py migrate AppName 0008_migration_name

E, se dobbiamo ripristinare tutte le migrazioni per un’app Django, possiamo usare il seguente comando.

python manage.py migrate AppName zero

Nota che a volte le migrazioni possono essere irreversibili. Generalmente, questa condizione si verifica quando sono state apportate alcune modifiche significative ai modelli Django. Quando proveremo a tornare a una tale migrazione, Django genererà 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.

Articolo correlato - Django Migration