如何设置';等待超时';postgresql中的值与MySQL中的值相同?
我使用的是Postgresql(9.6.3),我需要设置Wait\u timeout变量的值。但我找不到任何与此相关的答案,也找不到任何可以在Postgresql中代替MySQL中的wait_timeout变量使用的等效变量如何设置';等待超时';postgresql中的值与MySQL中的值相同?,postgresql,timeout,Postgresql,Timeout,我使用的是Postgresql(9.6.3),我需要设置Wait\u timeout变量的值。但我找不到任何与此相关的答案,也找不到任何可以在Postgresql中代替MySQL中的wait_timeout变量使用的等效变量 long wait_time = 0; ResultSet rs = null; try { Statement st = con.createStatement(); rs = st.executeQuery(
long wait_time = 0;
ResultSet rs = null;
try {
Statement st = con.createStatement();
rs = st.executeQuery("show variables like 'wait_timeout'");
if(rs.next())
wait_time = rs.getLong("Value");
rs.close();
} catch (SQLException e) {
logger.error(e);
}
// wait time in SQl is maintained in seconds whereas here we need
milliseconds
return (wait_time*1000)/2;
执行查询后,我在resultSet变量中获得空值。我发现了一个名为Statement_timeout的变量,但我不知道它是否等效,因为它可能会影响MySQL中as wait_timeout没有影响的所有其他会话。请给我一个更好的解决方案。提前感谢。MySQL实现了很多超时() MySQL有:
- wait_timeout—服务器在关闭非交互连接之前等待非交互连接上的活动的秒数。默认值28800s=8小时
- 类似的还有“interactive_timeout”——服务器在关闭交互连接之前等待活动的秒数李>
- “statement_timeout”-从命令从客户机到达服务器时开始,中止任何超过指定毫秒数的语句
- “空闲\u在\u事务\u会话\u超时”-使用空闲时间超过指定持续时间(毫秒)的打开事务终止任何会话
老实说,到目前为止,除了“connect\u timeout”之外,我不需要在MySQL中处理这些超时。所以我不能给你直接的建议。但也许“事务中的空闲会话超时”是您所需要的。PostgreSQL中没有这样的超时。这有什么好处?@LaurenzAlbe如何处理需要开放式Postgres连接的长时间运行的CLI批处理程序。我的服务器不断断开我的客户端的连接,因为我的客户端将处于空闲状态。“空闲\u在\u事务\u会话\u超时”是否不会影响任何其他会话?因为“语句超时”可能会影响application@JosMac@Kishore您也可以仅为特定会话设置这些设置-请参见此处:我怀疑您需要的是空闲\u in\u事务\u会话\u超时。这仅在会话已启动事务且未提交或回滚时使用。如果没有活动事务,或者有活动事务且正在运行查询,则不会应用此超时。我有类似的情况。我有一个CLI脚本,我在其中构建了一个连接,该连接在等待代码的其他部分完成时通常处于空闲状态。然后我收到
OperationalError
,因为连接处于空闲状态,并且也没有事务。然后服务器关闭连接。尝试了各种超时设置,但均无效。服务器只是关闭了连接。奇怪的是,此功能没有作为配置参数公开。另一个混淆点是,psycopg2支持连接池,这似乎表明psycopg2可以维护长期运行的空闲连接(在其池中,或者可能在空闲连接退出时通过创建新连接来轮询或响应异常)。如果是这样,为什么我不能手动创建一个长期运行的空闲连接供自己使用。