这是已经发生和正在发生的事件链
目前我在第 3 天
如果您从第 0 天开始,有很多关于如何让 Flask-migrate 运行的文档。您只需调用
flask db init
, flask db migrate
和 flask db upgrade
.但是,就我而言,它有点不同。我运行了命令,我的第一个迁移版本是空的。然后我修改了我的数据库模式并生成了一个新的迁移。现在我最新的迁移只有 1 行迁移,它将新行添加到表中。
我意识到我的所有迁移都没有创建数据库的实际架构,如果您在第 1 天开始 flask 迁移,这应该是您看到的第一个迁移。
如果我要从头开始克隆我的仓库:
flask db migrate
将导致 alembic.util.exc.CommandError: Target database is not up to date.
.flask db upgrade
将导致 sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "offer" does not exist
.我能做些什么来解决这个问题?
最佳答案
你有两个选择。
1)如果您只想跟踪数据库迁移
flask db init
, 创建迁移存储库。 flask db migrate
, 生成迁移。迁移脚本中只会包含新列。 flask db upgrade
将新迁移应用到您的数据库。 此时您的数据库应该有新列,您可以继续工作。每当您需要进行其他更改时,请重复上述步骤。
请注意,使用这种方法,您无法从头开始重新创建整个数据库。您必须有一种方法将数据库初始化为您在第 1 天拥有的模式,然后您可以将迁移历史应用到该模式以将其升级到您当前的模式。
2) 如果您想跟踪整个迁移历史记录,包括将 Flask-Migrate 添加到应用程序当天的架构。
这有点棘手,但可以做到。
flask db init
开始, 创建迁移存储库。 flask db migrate
.这将生成一个包含数据库整个架构的迁移。 flask db stamp head
将数据库标记为已更新。 flask db migrate
再次,生成第二次迁移。迁移脚本中只会包含新列。 flask db upgrade
将新迁移应用到您的数据库。 希望这可以帮助!
关于alembic - 如果您没有开始使用 alembic/flask-migrate 迁移现有数据库,如何添加它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42992256/