hibernate 连接数据库时报错

错误信息 : com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

解决方式 :

在hibernate的配置文件中添加以下信息:

<prop key="connection.autoReconnect">true</prop> <!–这个是最主要的–>

<prop key="connection.autoReconnectForPools">true</prop>

<prop key="connection.is-connection-validation-required">true</prop>

注 : 如果未使用hibernate等持久化管理框架,可在mysql的url中加入autoReconnect=true,这样就可以解决。

原因是:

Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。

原因很简单。在对数据库操作结束后关闭连接是正确的做法,没什么大问题。至于出现:No operations allowed after connection closed。这样的问题原因只有一个,你这里和数据库的连接Connection是一个Static的,程序共享这一个Connection。所以第一次对数据库操作没问题,当把Connection关闭后,第二次还想操作数据库时Connection肯定不存在了。

时间: 2024-11-15 00:50:30

hibernate 连接数据库时报错的相关文章

MySQL_PHP学习笔记_2015_0907_PHP用pdo连接数据库时报错 could not find driver

环境: Windows, zend studio 错误信息: could not find driver   第一想到的办法还是百度--   下面是解决办法: 由于PHP默认的设置中, php_pdo_mysql模块是关闭的, 所以才会报could not find driver的错误; 把这个模块打开, 重启apache. 摘自互联网:pdo 连接数据库 报错 could not find driver 解决方法

K8s的POD连接数据库时报错

[[email protected] xxxx]# ./showlog.sh dr iff-dr-1128668949-lb90g 2017-09-29 03:21:57,575 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction: Logging - STABLE org.wildfly.swarm:logging:2017.8.1 2017-09-29 03:21:57,612 INFO [org.wildfly.s

Cloud9:解决ThinkPHP在C9上运行时连接数据库时报错&quot;No such file or directory&quot;的问题

昨天尝试在c9上部署了一个ThinkPHP用于开发,但是当试图连接数据库时却出现了这样的问题.经过查找资料发现此问题是由于没有找到mysql.sock这个文件造成的(这个东西估计是mysql的连接线程)..然后,,就苦逼了,翻来覆去改php.ini却一点效果都没有,最后找到了一个建软连接的办法,但是那个教程给的地址不适用于c9.最后实在忍无可忍就敲了一下mysql,突然跳出来一行“ERROR 2002 (HY000): Can't connect to local MySQL server th

Mingyang.net:注解配置Hibernate时报错Unknown Entity

注解配置时报错:org.hibernate.MappingException: Unknown entity: net.mingyang.cms.bean.User org.hibernate.MappingException: Unknown entity: net.mingyang.cms.bean.User at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1096

将具有关联关系的两个表从hibernate查询出来转成json对象时报错

第一篇文章: 相信大家做过JSON相关的东西对这个异常并不陌生,这个异常是由于JSONObject插件内部会无限拆解你传入的对象,直到没有可拆解为止,问题就在这,如果你传入的对象有外键关系,或者相互引用,那么内部就会死循环,也就会抛出这个异常 解决办法,我们先说一种网上通用的:过滤      不错,过滤肯定会解决该问题,过滤也有两种方法: 一种是通过 Java代码   jsonConfig.setExcludes(new String[]{"dianYuanHeSuans"}) 该方法

Entity中Lazy Load的属性序列化JSON时报错

The server encountered an internal error that prevented it from fulfilling this request.org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: failed to lazily initialize a collection of role: com.party.dinner.entit

Hibernate保存时报java.lang.ClassCastException

今天改需求的是遇到一个问题,Hibernate执行save()方法时报错:java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal.在网上搜了一下,几乎所有的回答都是说实体.映射文件和表结构之间类型不对应.检查了好几遍也没有发现问题,只好想其它办法实现,结果在写其它方法代码的时候发现了问题所在. 我通过Hibernate去往一张视图的里存数据,视图是查通过dblink连接的一个数据库

向 mysql 插入汉字时报错 Incorrect string value: &#39;\xE6\x9B\xB9\xE5\x86\xAC...&#39; for col....

Incorrect string value: '\xE6\x9B\xB9\xE5\x86\xAC...' for column 'realname' at row 1 该情况一般是由数据库设计时的编码错误导致的. show variables like 'character%'   查看数据库编码,为latin1. 如果项目正在测试当中,数据不重要的话,一劳永逸的解决办法是,使用 alert database tuanplus character set utf8 更改数据库的编码格式,再重新

Python2爬虫获取的数据存储到MySQL中时报错&quot;Incorrect string value: &#39;\\xE6\\x96\\xB0\\xE9\\x97\\xBB&#39; for column &#39;new&#39; at row 1&quot;的解决办法

由于一直使用python3进行编码,在使用Python2时,将爬虫数据连接数据库进行存储时,出现如上的报错,经查资料 是数据库编码问题. 如下转自:http://www.cnblogs.com/liuzhixin/p/6274821.html 的博客,在此感谢博主的慷慨分享之情. 错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智