6

我有 PostgreSQL 9.2 和一个小型数据库,其中只有一些我正在开发的网站的种子数据。

以下查询似乎永远运行:

ALTER TABLE diagnose_bodypart ADD description text NOT NULL;

diagnose_bodypart是一个少于 10 行的表。我已经让查询运行了超过一分钟,但没有任何结果。可能是什么问题呢?有什么调试的建议吗?

4

1 回答 1

6

添加列不需要重写表(除非您指定 a DEFAULT)。这是一个没有任何锁的快速操作。正如克雷格指出的那样,pg_locks 是检查的地方。

一般来说,最可能的原因是长时间运行的事务。我将查看哪些工作流程正在影响这些表以及事务保持开放的时间。这种锁通常是事务性的,因此提交事务通常会解决问题。

于 2013-04-23T14:55:11.647 回答