我在使用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)时,没有应用任何更改。
我试过
答案 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