2015-06-03 8 views
36

Qualcosa è andato storto durante le mie migrazioni, ho aggiunto un nuovo datetimefield a un modello, quindi ho utilizzato le makemigrations e ho effettuato la migrazione.Come ripetere una migrazione su django 1.8 dopo l'uso --fake

python manage.py makemigrations 
python manage.py migrate 

Ma dopo questo la migrazione ha ottenuto un "errore di tabella esiste già". Dovrei potrei falsi le migrazioni e ricominciare da capo, così ho fatto

python manage.py makemigrations --fake core 

Operations to perform: 
    Apply all migrations: core 
Running migrations: 
    Rendering model states... DONE 
    Applying core.0001_initial... FAKED 
    Applying core.0002_auto_20150525_1331... FAKED 
    Applying core.0003_auto_20150525_1348... FAKED 
    Applying core.0004_processo_data_atualizacao... FAKED 

ma la nuova migrazione che ho appena creato era finto troppo (ovviamente!).

Come è il modo corretto di ripetere una migrazione (in questo caso il core.0004) dopo averlo fatto?

+1

Nel sud era possibile passare un passaggio specifico a cui si desidera eseguire la migrazione. Sarebbe quindi migrare in avanti o all'indietro, appena dopo il passaggio specificato. La funzione è stata eliminata quando è stata unita a Django? – spectras

+0

@spectras no non lo era, è esattamente lo stesso –

risposta

71

si deve prima impostare il tuo attuale stato di 0003 con --fake (supponendo 0003 è l'ultima migrazione davvero hanno applicato):

python manage.py migrate --fake core 0003 

E poi procedere come al solito:

python manage.py migrate core 

documentazione pertinente : https://docs.djangoproject.com/en/dev/ref/django-admin/#migrate

+0

e se fosse la prima migrazione che ho usato --fake on? –

+6

@EvyatarSivan dovresti usare "zero" invece del numero di migrazione, ad es. 'python manage.py migrate --fake core zero' –

+1

Vedi anche il flag' --fake-initial' https://docs.djangoproject.com/en/1.8/topics/migrations/#adding-migrations-to-apps . –