如何在postgres中找出哪个对象不处于先决状态?

时间:2017-08-01 09:09:55

标签: postgresql hibernate

我有一个运行在Postgresql上的hibernate的java应用程序。

之后,应用程序有时会处于不一致状态
2017-08-01 11:50:17,317 WARN o.h.e.j.s.SqlExceptionHelper [http-nio-8080-exec-4] SQL Error: 0, SQLState: 55000
2017-08-01 11:50:17,318 ERROR o.h.e.j.s.SqlExceptionHelper [http-nio-8080-exec-4] This statement has been closed.

我打开postgres日志

 log_destination = 'csvlog'
 logging_collector = on
 log_directory = 'pg_log'
 log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
 log_file_mode = 0600
 client_min_messages = debug5
 log_min_messages = debug5
 log_min_error_statement = debug5

postgres日志中没有记录表明某个对象没有处于先决条件状态。

如何找出哪个对象不处于先决状态?

1 个答案:

答案 0 :(得分:0)

根据评论中的其他信息,该错误消息源自JDBC驱动程序。

原因是在使用org.postgresql.jdbc.PgStatement方法关闭了org.postgresql.jdbc.PgPreparedStatementorg.postgresql.jdbc.PgCallableStatementclose()后,代码会尝试再次使用它。

这是Hibernate或应用程序代码中的一个错误,可能是因为线程没有正确同步。