Sob*_*gen 7 python postgresql flask-migrate
我在使用 Flask-Migrate 运行升级命令时遇到问题。最初我试图一次修改三个表但它挂了,我把它缩小到一个特定的表(其他升级没有问题)。我没有看到数据库上的任何锁。我正在使用 Postgres,目前只是在开发环境中工作。migrate 命令似乎工作正常并且生成的upgrade方法没有任何问题(见代码)
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('equipment', 'criteria_notes')
# ### end Alembic commands ###
Run Code Online (Sandbox Code Playgroud)
一旦我运行升级命令,我就会卡在这里:
>flask db upgrade
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 76bf72d8e0e4 -> 1723c01f0606, empty message
Run Code Online (Sandbox Code Playgroud)
带有闪烁的光标。当我退出命令窗口(我正在使用 Windows)时,没有应用任何更改。
我试过了
您可能有其他进程连接到此数据库。
这发生在我身上,我将 celery、uwsgi 和一个单独的自定义进程都连接到生产服务器上的 Flask DB,我想知道为什么升级会挂起。
一旦我手动关闭这些进程,升级脚本就可以正常运行而不会挂起。
就我而言,我在意识到这一点之前也尝试过重新启动,但这没有帮助,因为这些其他进程被编程为在启动时启动。
就我而言,这是由于桌子上的锁造成的。
select * from pg_locks;
Run Code Online (Sandbox Code Playgroud)
在 postgres 中向我展示了发生了什么。