第一步要做的是运行这个命令 alembic current
你应该得到一个如上所述的错误(目标是确保这个命令返回一个有效的响应)。
为什么你得到这个的原因是bc alembic对你目前的状态感到困惑。它假设你应该在版本39408d6b248d
中,但是然后决定该修订是无效的。
对此展开调查,让我们找出哪个版本是考虑由蒸馏器有效,运行这个命令:
alembic history --verbose
你会得到所有以前的版本(注列表:这是一个好主意附加信息每个修订旁边..想想它作为一个很好的混帐提交信息)
Rev: 594cc72f56fd (head)
Parent: 262f40e28682
Path: ***************
adjust context_id in log table so that it is a substring of the object_id
Revision ID: 594cc72f56fd
Revises: 262f40e28682
Create Date: 2015-07-22 14:31:52.424862
Rev: 262f40e28682
Parent: 1dc902bd1c2
Path: ***************
add context_id column to log table
Revision ID: 262f40e28682
Revises: 1dc902bd1c2
Create Date: 2015-07-22 11:05:37.654553
Rev: 1dc902bd1c2
Parent: <base>
Path: ***************
Initial database setup
Revision ID: 1dc902bd1c2
Revises:
Create Date: 2015-07-06 09:55:11.439330
修订39408d6b248d
显然并不在上述版本存在。这一修改存储在数据库中的alembic_table ..你可以进入到你的dBASE和运行验证:
$ select * from alembic_version;
version_num
--------------
57ac999dcaa7
所以现在你应该检查你的数据库的状态,看看它适合面对面的人上面输出的修订版本:
在我的情况下,通过拨动我的dbase,它变得明显哪个版本是我现在正在..这是该dbase已设置,,但其他修订尚未包括。
所以现在我就用一个我从上面的历史命令发现与dBASE替换值:
vibereel=> update alembic_version set version_num = '1dc902bd1c2';
,现在运行的蒸馏器电流恢复
INFO [alembic.migration] Context impl PostgresqlImpl.
INFO [alembic.migration] Will assume transactional DDL.
1dc902bd1c2
完成。
你是否找到了解决这个问题呢?我有同样的问题,但我认为在我的情况下,问题是我想插入记录在刚刚在变更集中创建的表中。我假设交易必须先关闭,以便表格可用... – orange