Django 1.7迁移挂起

sed*_*idw 8 python django database-migration

我有一个django迁移我试图申请.它变得很好(它很小,它只添加了CharField两个不同的模型.但是当我运行实际的迁移它挂起(没有失败,没有成功,只是坐着).

通过谷歌搜索我发现其他打开的连接可以搞乱它,所以我重新启动了数据库.但是,此DB连接到连续运行的作业,新查询会立即潜入.但是它们很小,上次我尝试重新启动时我认为我能够在其他任何事情之前执行迁移.依然没有.

还有其他已知的问题导致这样的事情吗?

Thi*_*ter 5

至少在PostgreSQL中,当存在活动事务时,您无法修改表(即使它只是添加新列).最简单的解决方法通常是:

  • 运行迁移脚本(将挂起)
  • 重新启动您的webserver/wsgi容器

重新启动Web服务器时,将中止所有打开的事务(假设您没有后台进程也打开事务),因此只要没有事务阻塞您的表,迁移就会完成.


Dan*_*yle 5

我今天也遇到同样的问题。我发现您可以在运行事务之前立即使用以下SQL清除PostgreSQL中所有挂起的事务:

-- View all the current activity
-- SELECT * FROM pg_stat_activity;

-- terminate other connections (make sure to add your own IP address)
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE client_addr <> 'YOUR IP HERE'
Run Code Online (Sandbox Code Playgroud)

这将终止所有不是您的连接,这在所有情况下都不是理想选择,但可以发挥作用。

  • pg_terminate_backend(pid)为我使用的版本,PostgreSQL 10.5 (4认同)