Django 1.7 迁移挂起
Django 1.7 Migrations hanging
我正在尝试申请 Django 迁移。它做得很好(它很小,它只是向两个不同的模型添加了 CharField
。但是当我 运行 实际迁移时它挂起(没有失败,没有成功,只是坐着)。
通过谷歌搜索,我发现其他打开的连接可能会干扰它,所以我重新启动了数据库。但是,此数据库会持续连接到 运行 宁个作业,并且新查询会立即潜入。但是它们很小,上次我尝试重新启动时,我认为我能够先执行迁移。仍然没有。
是否有任何其他已知问题导致类似情况?
至少在 PostgreSQL 中,当存在活动事务时,您不能修改 tables(即使它只是添加新列)。最简单的解决方法通常是:
- 运行 迁移脚本(会挂起)
- 重新启动您的 webserver/wsgi 容器
当重新启动您的网络服务器时,所有打开的事务都将被中止(假设您没有同时打开事务的后台进程),因此只要没有事务阻止您的 table,迁移就会完成.
我今天遇到了同样的问题。我发现您可以在 运行 您的交易之前立即使用以下 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'
这将终止任何不属于您的连接,这可能并非在所有情况下都是理想的,但非常有效。
对于未来的读者来说值得注意的是,当尝试为不正确大小的 CharField(依赖于 DB 实现)应用迁移时,迁移可能会挂起。我试图将 CharField 更改为大于 255 的大小,但它只是挂起。即使按照规定终止连接后,它也不会将其修复为大小大于 255 的 CharField,因为这对我的实现 (postgresql) 来说是不正确的。
TLDR; 确保您的 CharField 为 255 或更小,如果更大,请将您的 CharField 更改为 TextField,它可以解决您的问题!
我正在尝试申请 Django 迁移。它做得很好(它很小,它只是向两个不同的模型添加了 CharField
。但是当我 运行 实际迁移时它挂起(没有失败,没有成功,只是坐着)。
通过谷歌搜索,我发现其他打开的连接可能会干扰它,所以我重新启动了数据库。但是,此数据库会持续连接到 运行 宁个作业,并且新查询会立即潜入。但是它们很小,上次我尝试重新启动时,我认为我能够先执行迁移。仍然没有。
是否有任何其他已知问题导致类似情况?
至少在 PostgreSQL 中,当存在活动事务时,您不能修改 tables(即使它只是添加新列)。最简单的解决方法通常是:
- 运行 迁移脚本(会挂起)
- 重新启动您的 webserver/wsgi 容器
当重新启动您的网络服务器时,所有打开的事务都将被中止(假设您没有同时打开事务的后台进程),因此只要没有事务阻止您的 table,迁移就会完成.
我今天遇到了同样的问题。我发现您可以在 运行 您的交易之前立即使用以下 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'
这将终止任何不属于您的连接,这可能并非在所有情况下都是理想的,但非常有效。
对于未来的读者来说值得注意的是,当尝试为不正确大小的 CharField(依赖于 DB 实现)应用迁移时,迁移可能会挂起。我试图将 CharField 更改为大于 255 的大小,但它只是挂起。即使按照规定终止连接后,它也不会将其修复为大小大于 255 的 CharField,因为这对我的实现 (postgresql) 来说是不正确的。
TLDR; 确保您的 CharField 为 255 或更小,如果更大,请将您的 CharField 更改为 TextField,它可以解决您的问题!