PostgreSQL:由于管理员命令postgresql而终止连接

时间:2012-03-23 17:34:23

标签: postgresql slony

我发现SQL插入语句运行后发生了这个错误。 SQL由从Java执行的存储过程调用。请参阅以下内容。

=== 2012-03-23 20:39:13  Insert statement procedure executed ===

2012-03-23 21:16:01 CST:[local]:user@report:[1591]:FATAL:  57P01: terminating connection due to administrator command
2012-03-23 21:16:01 CST:[local]:user@report:[1591]:LOCATION:  ProcessInterrupts, postgres.c:2662
2012-03-23 21:16:01 CST:[local]:user@report:[656]:NOTICE:  00000: Slony-I: cleanup stale sl_nodelock entry for pid=1583
2012-03-23 21:16:01 CST:[local]:user@report:[656]:LOCATION:  exec_stmt_raise, pl_exec.c:2298
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:NOTICE:  00000: Slony-I: cleanup stale sl_nodelock entry for pid=1590
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:CONTEXT:  SQL statement "SELECT  "_slon_rep".cleanupNodelock()"
        PL/pgSQL function "cleanupevent" line 77 at PERFORM
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:LOCATION:  exec_stmt_raise, pl_exec.c:2298
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:NOTICE:  00000: Slony-I: cleanup stale sl_nodelock entry for pid=1634
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:CONTEXT:  SQL statement "SELECT  "_slon_rep".cleanupNodelock()"
        PL/pgSQL function "cleanupevent" line 77 at PERFORM
2012-03-23 21:22:55 CST:[local]:user@app:[17236]:LOCATION:  exec_stmt_raise, pl_exec.c:2298

=== 2012-03-23 22:15:04 Insert statement procedure return release signal to Java ===

我的数据库中有2个架构。 “app”和“report”都是由Slony共同同步的。 我已经检查了表格,发现这些记录是在 20:39:13 之后插入的。我的关注点是为什么Postgres在 22:15:04 时将释放信号返回给Java,因为插入语句已在 20:39:13执行 即可。我认为上面的进程受到影响,插入语句进程被挂起,需要等到它完成然后释放到Java。

提前致谢 停止:))

1 个答案:

答案 0 :(得分:0)

  

我的数据库中有2个架构。 “app”和“report”,两者都是由Slony共同同步的。

我的猜测是Slony正在检测插入副本的记录(记住,Slony只是Master-Slave)并且中止了你的连接。请只复制一种方式。