Postgresql 创建表永不结束

Postgresql 创建表永不结束,postgresql,pgadmin,Postgresql,Pgadmin,我尝试在我的Postgres数据库中创建表。我在1.18.1版中使用pgadmin。服务器上的Postgres版本是8.3.12 当我执行CREATETABLE语句时,它通常在几毫秒内完成,但有时会持续几分钟,我会停止它。然后我必须重新启动Postgres服务器,这是不可取的。我试着在人们来上班之前创建一个表,但这也不起作用 有人有类似的问题吗?我怎样才能解决这个问题? 重新启动服务器有时确实有问题。一些支持Postgres的GUI数据库管理程序默认以noautocommit模式启动。这意味着,

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

当我执行CREATETABLE语句时,它通常在几毫秒内完成,但有时会持续几分钟,我会停止它。然后我必须重新启动Postgres服务器,这是不可取的。我试着在人们来上班之前创建一个表,但这也不起作用

有人有类似的问题吗?我怎样才能解决这个问题?
重新启动服务器有时确实有问题。

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

检查:

select now()-query_start as query_age, *
from pg_stat_activity 
where state<>'idle'
order by 1 desc;
select now()-query\u以query\u年龄开始*
来自pg_统计_活动
何处状态为“空闲”
按1描述订购;

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

这可能是在等待锁定:但你为什么要使用一个古老且不受支持的Postgres版本?这不取决于我。。。我们的管理不允许更新。当我们想要将Java从版本6更新到版本8时,我们几乎没有战争……您有运行autovacuum吗?(在pg-8.4,IIRC之前真空没有自动运行)@wildplasser我们没有自动真空。我们的IT部门每个星期天都会手动吸尘。嗯,你无能为力。至少升级到9.x。并将IT部门提升到一定的水平。谢谢你的回答,Postgres 8.3没有“状态”栏。只有“当前查询”列可以在事务中