it-swarm.com.de

Die Zieldatenbank ist nicht auf dem neuesten Stand

Ich möchte eine Migration für eine Flaschen-App durchführen. Ich benutze Alembic.

Ich erhalte jedoch die folgende Fehlermeldung.

Target database is not up to date.

Online habe ich gelesen, dass es etwas damit zu tun hat. http://alembic.zzzcomputing.com/de/latest/cookbook.html#building-an-up-to-date-database-from-scratch

Leider verstehe ich nicht ganz, wie ich die Datenbank auf den neuesten Stand bringen kann und wo/wie ich den im Link angegebenen Code schreiben soll. Wenn Sie Erfahrung mit Migrationen haben, können Sie mir das bitte erklären

Vielen Dank

47
GangstaGraham

Nachdem Sie eine Migration erstellt haben, entweder manuell oder als --autogenerate, müssen Sie sie mit alembic upgrade head anwenden. Wenn Sie db.create_all() von einer Shell aus verwendet haben, können Sie mit alembic stamp head angeben, dass der aktuelle Status der Datenbank die Anwendung aller Migrationen darstellt.

62
davidism

Ich musste aus irgendeinem Grund einige meiner Migrationsdateien löschen. Nicht sicher warum. Aber das hat das Problem behoben.

Ein Problem ist, dass die Datenbank mit allen neuen Tabellen usw. ordnungsgemäß aktualisiert wird. Die Migrationsdateien selbst zeigen jedoch keine Änderungen an, wenn ich automigrate verwende.

Wenn jemand eine bessere Lösung hat, lass es mich wissen, denn im Moment ist meine Lösung irgendwie hackig.

8
GangstaGraham

Meine Einschätzung ist wie diese Frage: Wenn ich "./manage.py db migrate -m 'füge Beziehung'" ausführen, trat der Fehler wie folgt auf: " Alembic.util.exc.CommandError: Die Zieldatenbank ist nicht auf dem neuesten Stand." . "

Also habe ich den Status meiner Migration überprüft:

(venv) ]#./manage.py db heads
d996b44eca57 (head)
(venv) ]#./manage.py db current
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
715f79abbd75

und festgestellt, dass die Köpfe und der Strom unterschiedlich sind!

Ich habe es mit diesen Schritten behoben:

(venv)]#./manage.py db stamp heads
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running stamp_revision 715f79abbd75 -> d996b44eca57

Und jetzt ist der Strom dem Kopf gleich

(venv) ]#./manage.py db current
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
d996b44eca57 (head)

Und jetzt kann ich wieder migrieren.

3
LittleLogic

Um diesen Fehler zu beheben, löschen Sie die neueste Migrationsdatei (eine python Datei)) und versuchen Sie dann erneut, eine Migration durchzuführen.

1
Patrick Mutuku

Um dies zu lösen, lösche ich die zu migrierenden Tabellen und führe diese Befehle aus

flask db migrate

und 

flask db upgrade
0
fill_J