J'aimerais faire une migration pour une application Flask. J'utilise Alembic.
Cependant, je reçois l'erreur suivante.
Target database is not up to date.
En ligne, j'ai lu que cela avait quelque chose à voir avec cela. http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch
Malheureusement, je ne comprends pas très bien comment mettre la base de données à jour et où/comment écrire le code indiqué dans le lien. Si vous avez de l'expérience avec les migrations, pouvez-vous s'il vous plaît expliquer cela pour moi
Merci
Après avoir créé une migration, manuellement ou 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.
J'ai dû supprimer certains de mes fichiers de migration pour une raison quelconque. Pas certain de pourquoi. Mais cela a réglé le problème, en quelque sorte.
Un problème est que la base de données finit par être mise à jour correctement, avec toutes les nouvelles tables, etc., mais les fichiers de migration eux-mêmes ne montrent aucune modification lorsque j'utilise automigrate.
Si quelqu'un a une meilleure solution, s'il vous plaît faites le moi savoir, car maintenant ma solution est une sorte de hacky.
Mon statut correspond à la question suivante: Lorsque j'exécute "./manage.py db migrate -m" Ajouter une relation "", l'erreur est telle que " Alembic.util.exc.CommandError: La base de données cible n'est pas à jour . "
J'ai donc vérifié l'état 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 a constaté que les têtes et le courant sont différents!
Je l'ai corrigé en procédant comme suit:
(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 identique à 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 refaire la migration.
Pour résoudre ce problème, je supprime (supprime) les tables de la migration et lance ces commandes.
flask db migrate
et
flask db upgrade