Flask-Migrate挂起表修改

时间:2017-08-15 16:56:39

标签: 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 ###

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

>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 个答案:

答案 0 :(得分:1)

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

这件事发生在我身上,我有芹菜,uwsgi和一个单独的自定义过程都连接到生产服务器上的烧瓶DB,我很奇怪为什么升级挂起。

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

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

答案 1 :(得分:1)

我遇到了同样的问题,因为锁而发生在我身上,请使用

进行验证
select * from pg_locks; 

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

sudo systemctl restart postgresql
flask db upgrade

答案 2 :(得分:0)

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

select * from pg_locks; 
postgres中的

告诉我发生了什么。

答案 3 :(得分:0)

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

sudo service mysql restart