在SpringBoot中配置MySQL的wait_timeout与interactive_timeout参数
在Spring Boot的application.properties中配置MySQL的wait_timeout和interactive_timeout
我明白你想通过Spring Boot的配置文件来设置MySQL的wait_timeout和interactive_timeout,解决睡眠连接的问题——确实这两个参数是MySQL本身的会话级配置,Spring Boot并没有提供直接对应的原生配置项,但我们可以通过两种间接方式实现需求:
方案一:通过JDBC URL传递会话参数
MySQL的JDBC驱动支持在URL中通过sessionVariables参数指定会话级变量,每次建立数据库连接时自动应用这些配置。你只需要在spring.datasource.url中追加对应的参数即可:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&sessionVariables=wait_timeout=3600,interactive_timeout=3600
- 这里的
3600是示例值(代表1小时),你可以根据自己的业务需求调整时长 - 多个变量之间用英文逗号分隔,不需要额外空格
方案二:通过连接池初始化SQL设置
如果你使用的是Spring Boot默认的HikariCP连接池,可以通过connection-init-sql配置项,指定每次从连接池中获取连接时执行的初始化SQL,以此来设置这两个参数:
spring.datasource.hikari.connection-init-sql=SET wait_timeout=3600, interactive_timeout=3600
这种方式的优势在于更灵活,如果你需要执行其他数据库初始化操作(比如设置字符集、时区等),都可以在这条SQL中用分号分隔添加。
补充说明
这两种方式都是设置会话级的参数,只会影响你的Spring Boot应用建立的数据库连接,不会修改MySQL的全局配置,也不会影响其他连接到该数据库的应用。和你之前在MySQL命令行手动设置的效果是一致的。
内容的提问来源于stack exchange,提问作者ALI RAZA
相关产品推荐
相关产品推荐

