gpt4 book ai didi

mysql - 恢复 XID 提高 0 : unknown

转载 作者:行者123 更新时间:2023-11-29 07:02:43 26 4
gpt4 key购买 nike

我正在使用 Spring 3.0.5、Hibernate 3.6.7、Atomikos TransactionEssentials 3.7.0 和 MySQL 5.5

我最近遇到了一个问题,我的连接池中的连接在 8 小时后超时,并被服务器重置,导致消息“恢复 XID '???'”引发 0:未知

这是我的数据源配置:

<bean id="myDataSource"
class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init"
destroy-method="close"
depends-on="myConfigurer">
<property name="uniqueResourceName" value="myPUDataSource" />
<property name="xaDataSourceClassName" value="$CONF{database.XAdriver}" />
<property name="poolSize" value="10" />
<property name="xaProperties">
<props>
<prop key="user">$CONF{database.user}</prop>
<prop key="password">$CONF{database.password}</prop>
<prop key="URL">$CONF{database.url}</prop>
<prop key="pinGlobalTxToPhysicalConnection">true</prop>
<prop key="autoReconnect">true</prop>
</props>
</property>
</bean>

在调查过程中,我发现选项 autoReconnect=true 只会在延迟 2 秒(我认为这是可配置的)后重新连接我的故障连接。浏览网页时,我发现建议增加 MySQL 服务器中的 wait_timeout 的解决方案,我认为这不是真正的解决方案。应用程序应该能够处理死连接并自动重新连接,因为可能还有其他问题导致连接丢失。(无论应用程序使用何种类型,我都不想向服务器发出任何指令)。

最后我找到了一个很好的解决方案,我将其发布为答案以帮助面临相同或相似问题的人们。

最佳答案

通过插入行:

<property name="testQuery" value="SELECT 1"/>

在数据源的配置上,连接似乎在使用前进行了测试,如果断开则重新连接。我尝试使用 wait_timeout=60 甚至在我的应用程序运行时重新启动 MySQL-Server...

结果:不再有异常和错误!

关于mysql - 恢复 XID 提高 0 : unknown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com