我有一个运行在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日志中没有记录表明某个对象没有处于先决条件状态。
如何找出哪个对象不处于先决状态?
答案 0 :(得分:0)
根据评论中的其他信息,该错误消息源自JDBC驱动程序。
原因是在使用org.postgresql.jdbc.PgStatement
方法关闭了org.postgresql.jdbc.PgPreparedStatement
,org.postgresql.jdbc.PgCallableStatement
或close()
后,代码会尝试再次使用它。
这是Hibernate或应用程序代码中的一个错误,可能是因为线程没有正确同步。