我尝试使用alembic处理项目的本地迁移。第一次成功了,但后来我需要删除文件夹并重新启动。(不要问为什么,我只是不得不)我遵循this tutorial并运行命令
python manage.py db init
这没什么,但当我想跑的时候
python manage.py db migrate
我得到这个错误:
alembic.util.CommandError: Can't locate revision identified by '31b8ab83c7d'
现在,看起来alembic正在寻找一个已经不存在的版本号。有什么方法可以让alembic忘记这个文件吗?或者像从None重新开始比较到-〉auto-generated再次?
4条答案
按热度按时间xn1cxnb41#
Alembic将版本历史存储在您的数据库中。因此,它使用存储在数据库中的值来搜索修订。我的个人数据库的版本号存储在表
alembic_version
中:提示:如果是基于SQL的数据库,请使用命令
SHOW TABLES
查看表。要解决您的问题,只需使用以下命令:
或者不管数据库版本表的名称是什么。然后您需要使用以下命令重新初始化迁移文件夹:
然后创建一个新的迁移:
然后你应该很好地去与工作迁移在alembic。
mpgws1up2#
SirKaiserKai的解决方案对我不起作用,可能是因为我上次迁移时犯了一些愚蠢的错误,删除了一个我应该保留的文件。
我没有删除
alembic_revision
表,而是更新了version_num
中的值,以匹配我知道的数据库所在的位置。请确保使用与数据库当前状态匹配的文件迁移ID
1.检查缺少的迁移号
1.更新数值
如果您的数据库处于迁移文件
<true state of DB>
以外的状态,那么您将继续遇到错误。但是,如果<true state of DB>
是从您之前停止的位置继续的迁移文件,则可以运行alembic upgrade head
,并且也会运行此状态后的所有迁移。mf98qq943#
如果您遇到上述相同的问题,请运行以下命令:
然后运行以下alembic命令:
印章头允许alembic拥有最新的表结构。在运行新修订之前。
57hvy0tb4#
答:
**注意:**我在Ubuntu PostgreSQL中解决了这个问题
1.在Ubuntu中打开PostgreSQL,它会询问密码
1.去你的数据库
1.显示数据库中的所有表
1.如果找到修订号(例如,
c140cfa017b4
),则显示表中的所有数据1.放下table
如果问题解决了,你可以继续工作