2013-07-21 3 views
37

Vorrei effettuare una migrazione per un'app Flask. Sto usando Alembic.Il database di destinazione non è aggiornato

Tuttavia, viene visualizzato il seguente errore.

Target database is not up to date. 

In linea, ho letto che ha qualcosa a che fare con questo. http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch

Sfortunatamente, non capisco perfettamente come aggiornare il database e dove/come dovrei scrivere il codice indicato nel collegamento. Se avete esperienza con le migrazioni, si può spiegare questo per me

Grazie

risposta

46

Dopo aver creato una migrazione, manualmente o come --autogenerate, è necessario applicarlo con alembic upgrade head. Se si utilizza db.create_all() da una shell, è possibile utilizzare alembic stamp head per indicare che lo stato corrente del database rappresenta l'applicazione di tutte le migrazioni.

5

ho dovuto eliminare alcuni file di migrazione per qualche motivo. Non so perché. Ma questo ha risolto il problema, in un certo senso.

Un problema è che il database finisce per essere aggiornato correttamente, con tutte le nuove tabelle, ecc., Ma i file di migrazione non mostrano alcuna modifica quando utilizzo l'automazione.

Se qualcuno ha una soluzione migliore, per favore fatemelo sapere, in questo momento la mia soluzione è un po 'hacky.

+0

So che ora è un po 'vecchio, ma le tabelle ereditano da Base? Ho avuto lo stesso problema e la migrazione automatica non stava rilevando le modifiche a causa del fatto che le mie nuove tabelle non ereditavano da Base dove la base è 'Base = declarative_base() ' e ricorda anche 'da sqlalchemy.ext.declarative import dichiarative_base ' –