大家帮帮看日志错误,是不是MySQL设置有问题?

woniufly 2009-04-09 11:41:48
2009-04-09 11:06:44 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Communications link failure

Last packet sent to the server was 21 ms ago.
2009-04-09 11:06:44 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Already closed.
2009-04-09 11:06:44 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Already closed.
采用架构是ssh
开发的时候,没有问题,部署到服务器上,就报上面的错误
是不是mysql 的问题?高手们,给点思路吧,感激了!!!
...全文
78 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
c8234933 2009-04-22
  • 打赏
  • 举报
回复
学习了~~ 谢谢
woniufly 2009-04-10
  • 打赏
  • 举报
回复
谢谢你,问题解决了,原来服务器上的wait_timeout的值是10
woniufly 2009-04-10
  • 打赏
  • 举报
回复
我的是hibernate.cfg.xml交给spring管理
woniufly 2009-04-10
  • 打赏
  • 举报
回复
<!-- 数据库连接的配置 -->
<bean id="databaseConnection"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/minlong?autoReconnect=true">
</property>
<property name="username" value="ROOT"></property>
<property name="password" value="ADMIN"></property>
</bean>
<!-- sessionFactory的配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="databaseConnection" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/minlong/pojo/Admin.hbm.xml</value>
</list>
</property>
</bean>

<!-- hibernate模板的配置 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
  • 打赏
  • 举报
回复
为什么让你在hibernate.cfg.xml中,在url的连接后加上autoReconnect=true
出现[org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Communications link failure
应该是MySQL wait timeout的值默认是28800 (3600*8),即一个连接在8小时内没有活动,就会自动断开该连接。
wait timeout的值可以设定,但最多只能是32767,不能再大了


要是还不行,就为hibernate配置连接池,
推荐用c3p0,然后配置c3p0的反空闲设置idle_test_period,只要小于MySQL的wait timeout即可。
在hibernate.cfg.xml中增加下面几项:
<!-- configuration pool via c3p0-->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property> <!-- seconds --><!-- default: 0 -->
<property name="c3p0.max_statement">50</property> <!-- default: 0 -->
<property name="c3p0.acquire_increment">1</property> <!-- default: 1 -->
<property name="c3p0.idle_test_period">120</property> <!-- seconds --><!-- default: 0 -->
<property name="c3p0.validate">true</property>
  • 打赏
  • 举报
回复
你先试试
在hibernate.cfg.xml中,在url的连接后加上autoReconnect=true
  • 打赏
  • 举报
回复
把你的数据源配置文件贴出来
woniufly 2009-04-09
  • 打赏
  • 举报
回复
网站倒是能跑的起来,只是有些数据从数据库中取不出来,
只要点击几下刷新,出不来的数据就会重新取出来,查看日志文件
如下:
2009-04-09 11:06:44 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Communications link failure
Last packet sent to the server was 21 ms ago.
2009-04-09 11:06:44 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Already closed.
2009-04-09 11:06:44 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] - Already closed.
,这让人很郁闷啊,是不是连接数据库有什么问题呢,但为什么,有些数据能取得出来,有些数据非要刷新几次才能取的出来呢,
项目采用的框架式:strust1.2+hibernate3.0+spring,都是用spring的hibernateTemplate进行操作的,刚开始以为是配置缓存的
问题,取消了所有的缓存还是不行!也没有配置什么连接池,开发测试的时候,都没有问题!
部署到服务器上,就出现上述问题,难道是和服务器上的mysql数据库的设置有关,或是别的什么原因,那位大哥碰到过上述问题啊,困扰了好几天啊,
帮帮小弟我把,感激~~
defty 2009-04-09
  • 打赏
  • 举报
回复
也可能是服务器上的jdbc配置文件有问题
defty 2009-04-09
  • 打赏
  • 举报
回复
网络不稳定吧,返回数据丢了

81,110

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧