171 votes

La base de données des cibles n'est pas à jour

Je voudrais faire une migration pour une application Flask. J'utilise Alembic.

Cependant, je reçois l'erreur suivante.

Target database is not up to date.

Sur Internet, j'ai lu que ça avait quelque chose à voir avec ça. http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch

Malheureusement, je ne comprends pas bien comment mettre à jour la base de données et où/comment je dois écrire le code donné dans le lien.

188voto

davidism Points 5946

Après avoir créé une migration, soit manuellement, soit en tant que --autogenerate vous devez l'appliquer avec alembic upgrade head . Si vous avez utilisé db.create_all() à partir d'un shell, vous pouvez utiliser alembic stamp head pour indiquer que l'état actuel de la base de données représente l'application de toutes les migrations.

169voto

XeusKing Points 1360

Cela a marché pour moi

$ flask db stamp head
$ flask db migrate
$ flask db upgrade

45voto

LittleLogic Points 431

Ma question est la suivante : Quand j'exécute "./manage.py db migrate -m 'Add relationship'", l'erreur est survenue comme ceci ". alembic.util.exc.CommandError : La base de données cible n'est pas à jour".

J'ai donc vérifié le statut de ma migration :

(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

et j'ai constaté que les têtes et le courant sont différents !

Je l'ai réparé en suivant les étapes suivantes :

(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

Et maintenant le courant est le même pour la tête

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

Et maintenant je peux faire la migration à nouveau.

37voto

Anupam Haldkar Points 585

Ce problème peut être résolu de plusieurs façons :

1 Pour corriger cette erreur, supprimez le dernier fichier de migration (un fichier python) puis essayez d'effectuer une nouvelle migration.

Si le problème persiste, essayez les commandes suivantes :

$ 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.

14voto

Sergi Ramón Points 117
$ 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.

Vous pouvez trouver plus d'informations dans la documentation https://flask-migrate.readthedocs.io/en/latest/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X