7

我在使用 Flask-Migrate 运行升级命令时遇到问题。最初我试图一次修改三个表并且它挂起,我将其缩小到一个特定的表(其他升级没有问题)。我没有看到数据库上有任何锁。我正在使用 Postgres,目前只是在开发环境中工作。migrate 命令似乎工作正常并生成upgrade没有任何问题的方法(参见代码)

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_column('equipment', 'criteria_notes')
    # ### end Alembic commands ###

一旦我运行升级命令,我就会卡在这里:

>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

带有闪烁的光标。当我退出命令窗口(我正在使用 Windows)时,没有应用任何更改。

我试过了

  • 重新启动计算机
  • 使用 pgAdmin 寻找锁或其他会话
  • 修改其他表,能够添加和删除列
4

4 回答 4

5

您可能有其他进程连接到此数据库。

这发生在我身上,我有 celery、uwsgi 和一个单独的自定义进程都连接到生产服务器上的烧瓶数据库,我想知道为什么升级会挂起。

一旦我手动关闭这些进程,升级脚本就可以正常运行而不会挂起。

在我的情况下,我也尝试在意识到这一点之前重新启动,但这并没有帮助,因为这些其他进程被编程为在启动时启动。

于 2018-05-21T18:10:19.040 回答
2

我有同样的问题,这个问题发生在我身上是因为锁,验证它使用

select * from pg_locks; 

每个锁对应的PID有很多,我重新启动了postgresql服务然后运行升级命令它工作

sudo systemctl restart postgresql
flask db upgrade
于 2020-04-20T19:53:20.113 回答
1

由于锁,我在 MySql 上遇到了同样的问题,这个命令对我有用。

sudo service mysql restart
于 2021-04-05T17:20:02.103 回答
0

在我的情况下,这是由于桌子上的锁。

select * from pg_locks; 

在 postgres 中向我展示了正在发生的事情。

于 2018-04-24T22:11:20.187 回答