我想提出一个迁移的烧瓶中的应用。我使用的蒸馏器。
不过,我收到以下错误。
Target database is not up to date.
在网上,我读它有事情做与此有关。 http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch
不幸的是,我不太明白如何让数据库恢复到的日期和地方/我应该怎么写中给出的链接代码。如果你有移民的经验,能否请您解释一下这对我来说
谢谢
手动或--autogenerate
创建迁移,要么后,必须用alembic upgrade head
应用它。如果从外壳使用db.create_all()
,您可以使用alembic stamp head
来指示数据库的当前状态代表所有迁移的应用。
我stuation是这样的问题,当我执行“./manage.py数据库迁移-M‘添加关系’”,occused错误这样的‘alembic.util.exc.CommandError:目标数据库不是最新的。’
所以,我检查了我的迁移的状态:
(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
,发现头和电流是不同的!
我固定它通过这样的步骤:
(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
而现在的电流相同的头
(venv) ]#./manage.py db current
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
d996b44eca57 (head)
而现在我又可以做迁移。
我不得不删除我的一些迁移文件的某些原因。不知道为什么。但是,解决了这一问题,一种。
一个问题是,该数据库最终得到正确更新,与所有的新表等,但迁移文件本身,当我使用automigrate不显示任何变化。
如果有人有更好的解决方案,请让我知道,因为现在我的解决方案是一种哈克。
要解决此错误,删除最近迁移文件(Python文件),然后尝试重新执行迁移。
尝试删除所有表之前执行的数据库升级命令。
为了解决这个问题,我滴(删除)在迁移表和运行这些命令
flask db migrate
和
flask db upgrade