MySql: no se permiten operaciones después de la solución de conexión cerrada

Configuración de la fuente de datos Spring Boot y No se permiten operaciones después de la conexión cerrada Solución de excepción de conexión

Permítanme hablar primero sobre la configuración de mi proyecto: SpringBooot + SpringMVC + SpringData JPA + MySql

No hay nada de malo en el desarrollo inicial y todo funciona bien. Pero hoy lo probé nuevamente e informé el siguiente error:

Preste atención a los puntos clave al solucionar las excepciones: no se permiten operaciones después de cerrar la conexión .

Desde este lugar sabemos que se ha cerrado el enlace de mysql. Por supuesto, se produce una excepción al acceder a un enlace cerrado.

la razón:

El motivo de esta excepción es que MySQL 5.0 se ha ocupado de las conexiones de base de datos a largo plazo posteriormente, es decir, si una conexión de base de datos ha pasado sin ninguna operación después de 8 horas (el servidor Mysql predeterminado "wait_timeout" Son 8 horas), Mysql cerrará automáticamente la conexión. Este es el problema. Si las conexiones en el grupo de conexiones están inactivas durante más de 8 horas, mysql las desconectará y el grupo de conexiones en sí mismo no sabe que la conexión ha expirado. Si hay un Cliente que solicita la conexión en este momento, el grupo de conexiones no será válido La conexión proporcionada al Cliente provocará la excepción anterior.
Por lo tanto, al configurar la fuente de datos, debe configurar los parámetros del grupo de conexiones correspondientes, para verificar la validez de la conexión y limpiar regularmente las conexiones no válidas.
 

¿Cuál es la solución?

Agregue la siguiente configuración del grupo de conexiones en la configuración de las dos fuentes de datos en application.properties:

#以下为连接池的相关参数配置
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.validation-query=SELECT 1
spring.datasource.test-on-borrow=false
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=18800

Suplemento: El grupo de conexiones que Spring Boot utilizará de forma predeterminada es el grupo de conexiones Tomcat, siempre que el grupo de conexiones Tomcat esté disponible.

 

Supongo que te gusta

Origin blog.csdn.net/qq_35393693/article/details/106984160
Recomendado
Clasificación