PostgreSQL 9.1.3数据库在应用程序尝试在EventLogEntry表中插入时挂起。
1.表格的划分是
Column | Type | Modifiers
-------------+-----------------------+-----------
tableindex | integer |
object | character varying(80) |
method | character varying(80) |
bgwuser | character varying(80) |
time | character(23) |
realuser | character varying(80) |
host | character varying(80) |
application | character varying(80) |
索引:
"ind1_eventlogentry" UNIQUE, btree (tableindex), tablespace "mmindex"
表空间:“mmdata”
2.在我们运行以下查询时从客户站点获取的数据库中,查询被挂起。
INSERT INTO eventLogEntry (object, method, bgwUser, time, realUser, host, application, tableIndex)
VALUES (E'Server', E'Start', E'bgw', E'20140512122404', NULL, NULL, NULL, 539 );
3.但是当我们在586之后使用索引时,插入在同一个数据库中正确发生。
INSERT INTO eventLogEntry (object, method, bgwUser, time, realUser, host, application, tableIndex )
VALUES (E'Server', E'Start', E'bgw', E'20140512122404', NULL, NULL, NULL, 587 );
4.当我们进行调试时,我们发现PostgreSQL已存储了一些其他事务ID,并要求当前事务等待上一次事务提交或回滚之前的时间。但我们不确定PostgreSQL如何以及在哪里存储事务ID?
5似乎某种方式索引已损坏且postgreSQL已在某处存储了某些事务ID,因此它不允许当前事务发生在该特定索引范围内。
6.当索引被删除并且表格已经重新创建时,一切正常。
Plz通过提供以下查询的答案来帮助我解决这个问题