La base de datos de destino no está actualizada

Me gustaría hacer una migración para una aplicación Flask. Estoy usando Alembic.

Sin embargo, recibo el siguiente error.

Target database is not up to date. 

En línea, leí que tiene algo que ver con esto. http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch

Desafortunadamente, no entiendo bien cómo actualizar la base de datos y dónde / cómo debo escribir el código que figura en el enlace. Si tiene experiencia con migraciones, ¿puede explicarme esto por favor?

Gracias

Después de crear una migración, ya sea manualmente o como --autogenerate , debe aplicarla con un alembic upgrade head . Si usó db.create_all() desde un shell, puede usar alembic stamp head para indicar que el estado actual de la base de datos representa la aplicación de todas las migraciones.

Tuve que borrar algunos de mis archivos de migración por alguna razón. No estoy seguro de por qué. Pero eso solucionó el problema, algo así.

Un problema es que la base de datos se actualiza correctamente, con todas las tablas nuevas, etc., pero los archivos de migración en sí mismos no muestran ningún cambio cuando uso la función Automigrate.

Si alguien tiene una solución mejor, por favor hágamelo saber, ya que ahora mi solución es una especie de hacky.

Mi opinión es como esta pregunta, Cuando ejecuto “./manage.py db migrate -m ‘Agregar relación'”, el error se produjo de esta manera “alembic.util.exc.CommandError: La base de datos de destino no está actualizada”.

Así que he comprobado el estado de mi migración:

 (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 

¡Y encontré que las cabezas y la stream son diferentes!

Lo arreglé siguiendo estos pasos:

 (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 

Y ahora la stream es igual a la cabeza.

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

Y ahora puedo hacer la migración de nuevo.

Para corregir este error, elimine el archivo de migración más reciente (un archivo de Python) y luego intente realizar una migración de nuevo.

Intente eliminar todas las tablas antes de ejecutar el comando db upgrade.

Para resolver esto, suelto (borro) las tablas en la migración y ejecuto estos comandos

 flask db migrate 

y

 flask db upgrade