目标数据库是不是最新的

问题描述 投票:50回答:6

我想提出一个迁移的烧瓶中的应用。我使用的蒸馏器。

不过,我收到以下错误。

Target database is not up to date.

在网上,我读它有事情做与此有关。 http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch

不幸的是,我不太明白如何让数据库恢复到的日期和地方/我应该怎么写中给出的链接代码。如果你有移民的经验,能否请您解释一下这对我来说

谢谢

python flask sqlalchemy alembic
6个回答
69
投票

手动或--autogenerate创建迁移,要么后,必须用alembic upgrade head应用它。如果从外壳使用db.create_all(),您可以使用alembic stamp head来指示数据库的当前状态代表所有迁移的应用。


18
投票

我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)

而现在我又可以做迁移。


8
投票

我不得不删除我的一些迁移文件的某些原因。不知道为什么。但是,解决了这一问题,一种。

一个问题是,该数据库最终得到正确更新,与所有的新表等,但迁移文件本身,当我使用automigrate不显示任何变化。

如果有人有更好的解决方案,请让我知道,因为现在我的解决方案是一种哈克。


1
投票

要解决此错误,删除最近迁移文件(Python文件),然后尝试重新执行迁移。


-1
投票

尝试删除所有表之前执行的数据库升级命令。


-3
投票

为了解决这个问题,我滴(删除)在迁移表和运行这些命令

flask db migrate

flask db upgrade
© www.soinside.com 2019 - 2024. All rights reserved.