2014-09-08 11 views
8

Ho accidentalmente lasciato cadere un tavolo nel progetto Django 1.7. Ho eseguito makemigrations & migrate. Entrambi i comandi non hanno riconosciuto che la tabella è stata eliminata. Quindi non hanno avuto alcun effetto.Django 1.7 - Accidentalmente un tavolo. Come recuperarlo?

Devo rimuovere il codice per il modello, effettuare la migrazione, aggiungere nuovamente il codice per il modello & migrare? O c'è un modo migliore per recuperarlo?

+1

Probabilmente userò il comando 'django-admin sql' e ricreamo la tabella manualmente, ma hai provato a usare' migrate' per tornare a una versione precedente alla creazione di quella tabella, e quindi a migrare di nuovo al ultima versione? Vedi anche l'opzione '--fake' su' migrate', ma non so se sarebbe utile qui. –

+1

A meno che non si disponga di backup o fixture, mi dispiace di dire che i tuoi dati sono andati. È possibile ripristinare le tabelle del database, ma non i contenuti. – karthikr

risposta

17

Prova questo:

python manage.py sqlmigrate app_name 0001 | python manage.py dbshell 

Esso tubi l'uscita della migrazione applicazione iniziale dbshell, che lo esegue. Suddividi in due passaggi e copia/incolla i comandi SQL se desideri un maggiore controllo su ciò che sta accadendo.

Ovviamente la migrazione contiene una singola transazione per tutte le tabelle dell'app, quindi se è presente una sola tabella mancante (da un'app multi-modello) è necessario selezionare manualmente solo la tabella che si desidera ricreare .

+0

Il buon vecchio syncdb era molto meglio nella gestione di uno scenario come questo. –

Problemi correlati