java在mysql上关闭连接后不允许操作
我为我的webiste更换了主机公司,我在其中使用了mySQL数据库。 我时常会遇到这样的错误:
No operations allowed after connection closed.
我记得我第一次在旧服务器上运行我的站点时遇到了同样的问题,我用“配置修复”而不是“代码修复”修复了这个问题,但我不记得我做了什么:(
我在这里读了很多帖子,但每一篇都在谈论代码修复,我不认为这是我的情况
有人能帮我吗
谢谢!
编辑
我是在我以前的背景下发现的。xml文件;也许这就是我解决问题的方法
validationQuery="SELECT 1"
testOnBorrow="true"
testOnBorrow:(布尔值)指示对象在从池中借用之前是否将被验证。如果对象无法验证,它将从池中删除,我们将尝试借用另一个对象。注意-要使真值生效,validationQuery参数必须设置为非空字符串。默认值为false
validationQuery:(字符串)将用于验证来自此池的连接的SQL查询,然后将其返回给调用方。如果指定,这个查询不必返回任何数据,它只是不能抛出SQLException。默认值为空。示例值包括SELECT 1(mysql)、SELECT 1 from dual(oracle)、SELECT 1(MS Sql Server)
有人能证实吗
# 1 楼答案
您可以在JDBC连接URL中使用autoReconnect=true参数:(例如:“JDBC:mysql://localhost:3306/my-db?autoReconnect=true”)
但是请注意,如果应用程序不能正确处理SQLExceptions,这可能会导致问题
来自MySql文档:
# 2 楼答案
在配置属性中,您可能使用了c3p0属性maxIdleTime,但c3p0属性是使用c3p0配置的。或者休眠。c3p0。。请注意,启用任何c3p0属性都会通过hibernate启发式自动启用相应的连接提供程序。在日志中看不到您正在使用c3p0。如果未配置数据源,则Hibernate将使用Hibernate。联系提供者_类组织。冬眠联系DriverManager连接提供程序。此连接提供程序具有内置的基本连接池,您可以为其设置休眠。联系池大小,但仅用于开发目的。不要在生产环境中使用它
关于如何修复java,您可能会有无休止的讨论。网袜子例外:管子断了。过了一段时间,你会意识到你在池中保持了开放的连接,但由于以下原因,另一侧的连接突然关闭:
MySQL服务器可能是 关闭超过等待超时的空闲连接或 交互式超时阈值
为了帮助解决这些问题,可以使用以下提示:
使用了JDBC驱动程序的最新版本(5.1.13+)
为了遵守其中一些选项,您最好使用一个可以与Hibernate一起使用的连接池。Hibernate支持commons dbcp、c3p0和proxool。您还可以在web服务器上配置JNDI数据源以与hibernate一起使用,它有一个连接池