【发布时间】:2022-11-12 19:41:00
【问题描述】:
我想在 JDBC/Hikari 池中设置公共超时变量。
为此,我尝试了 JDBC URL 和 Hikari 配置中的变量,但似乎都不起作用。
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl("jdbc:mysql://*/*?wait_timeout=77&interactive_timeout=78");
hikariConfig.setUsername("*");
hikariConfig.setPassword("*");
hikariConfig.setConnectionTimeout(65 * 1000);
hikariConfig.setIdleTimeout(66 * 1000);
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
Connection connection1 = hikariDataSource.getConnection();
Statement statement1 = connection1.createStatement();
ResultSet resultSet1 = null;
resultSet1 = statement1.executeQuery("show variables like '%timeout%'");
仍然在这里获取默认值
while (resultSet1.next()) {
System.out.println(resultSet1.getString(1) + " " + resultSet1.getString(2));
}
【问题讨论】:
-
setConnectionTimeout和setIdleTimeout是 HikariCP 连接池的配置,不会影响(或影响)MySQL 方面的事情。 -
@MarkRotteveel 同意。我想知道设置 mysql 连接属性的方法,例如 hikaricp 将维护的 wait_timeout/interactive_timeout。
-
我通常不使用 MySQL,如果它有 connection property,请查看 MySQL Connector/J 的文档。乍一看,唯一可能的候选者是
connectionAttributes,但这只是我的猜测。