我有一个PostgreSQL 9.2和一个小型数据库,只有一些我正在研究的网站的种子数据。
以下查询似乎永远运行:
ALTER TABLE diagnose_bodypart ADD description text NOT NULL;
diagnose_bodypart
是一个少于10行的表。我让查询运行超过一分钟没有结果。可能是什么问题呢?有关调试的建议吗?
答案 0 :(得分:4)
添加列不需要重写表(除非您指定DEFAULT
)。没有任何锁定,这是一个快速操作。正如克雷格指出的那样,pg_locks是值得检查的地方。
一般来说,最可能的原因是长期运行的交易。我会看看这些表中的工作流程以及交易持续多长时间。这种锁通常是事务性的,因此提交事务通常可以解决问题。