创造 table 永无止境

Create table never ending

我尝试在我的 Postgres 数据库中创建 table。我在 1.18.1 版本中使用 pgadmin。服务器上的 Postgres 版本是 8.3.12。

当我执行 create table 语句时,通常它会在几毫秒内完成,但有时它会持续几分钟,我会停止它。然后我必须重新启动 Postgres 服务器,这是不可取的。我尝试在人们开始工作之前创建 table,但这也没有用。

有人遇到过类似的问题吗?我该如何解决? 重启服务器有时确实有问题。

一些支持 Postgres 的 GUI 数据库管理程序默认以 noautocommit 模式启动。这意味着,如果您不隐式提交您的语句,此程序将长时间保持空闲未提交的会话,锁定资源——尤其是当您执行 DDL 语句时,如 create table.

检查:

select now()-query_start as query_age, *
from pg_stat_activity 
where state<>'idle'
order by 1 desc;

如果您在 query_age 列和 idle in transaction 状态中看到时间较长的行,那么您确实需要在您的客户端程序中启用自动提交。其实你需要这样做,即使你不这样做......