Ich möchte eine Migration für eine Flask-App durchführen. Ich benutze Alembic.
Ich erhalte jedoch den folgenden Fehler.
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 soll und wo / wie ich den im Link angegebenen Code schreiben soll. Wenn Sie Erfahrung mit Migrationen haben, können Sie mir dies bitte erklären
Vielen Dank
quelle
Dies kann auf viele Arten gelöst werden:
1 Um diesen Fehler zu beheben, löschen Sie die neueste Migrationsdatei (eine Python-Datei) und versuchen Sie erneut, eine Migration durchzuführen.
Wenn das Problem weiterhin besteht, versuchen Sie Folgendes:
$ flask db stamp head # To set the revision in the database to the head, without performing any migrations. You can change head to the required change you want. $ flask db migrate # To detect automatically all the changes. $ flask db upgrade # To apply all the changes.
quelle
Ich musste aus irgendeinem Grund einige meiner Migrationsdateien löschen. Nicht sicher warum. Aber das hat das Problem irgendwie behoben.
Ein Problem ist, dass die Datenbank mit allen neuen Tabellen usw. ordnungsgemäß aktualisiert wird, die Migrationsdateien selbst jedoch keine Änderungen aufweisen, wenn ich die automatische Migration verwende.
Wenn jemand eine bessere Lösung hat, lassen Sie es mich bitte wissen, da meine Lösung im Moment irgendwie hackig ist.
quelle
Base = declarative_base()
from sqlalchemy.ext.declarative import declarative_base
$ flask db stamp head # To set the revision in the database to the head, without performing any migrations. You can change head to the required change you want. $ flask db migrate # To detect automatically all the changes. $ flask db upgrade # To apply all the changes.
Weitere Informationen finden Sie in der Dokumentation https://flask-migrate.readthedocs.io/en/latest/
quelle
Ich bin auch auf verschiedene Köpfe gestoßen und wollte eines der Felder von Zeichenfolge in Ganzzahl ändern, also zuerst ausführen:
$ flask db stamp head # to make the current the same $ flask db migrate $ flask db upgrade
Es ist jetzt gelöst!
quelle
Dies kann auch passieren, wenn Sie wie ich gerade ein neues Projekt gestartet haben und die speicherinterne SQLite-Datenbank (
sqlite:///:memory:
) verwenden. Wenn Sie eine Migration auf eine solche Datenbank anwenden, befindet sich die Datenbank beim nächsten Mal, wenn Sie sagen möchten, dass eine Revision automatisch generiert wird, immer noch im ursprünglichen Zustand (leer), sodass sich alembic beschwert, dass die Zieldatenbank nicht den Anforderungen entspricht Datum. Die Lösung besteht darin, zu einer dauerhaften Datenbank zu wechseln.quelle
Um diesen Fehler zu beheben, löschen Sie die neueste Migrationsdatei (eine Python-Datei) und versuchen Sie dann, eine erneute Migration durchzuführen.
quelle
Versuchen Sie, alle Tabellen zu löschen, bevor Sie den Befehl db upgrade ausführen.
quelle
Um dies zu lösen, lösche (lösche) ich die Tabellen in der Migration und führe diese Befehle aus
und
quelle