我为我的webiste更改了主机公司,其中我使用mySQL db。我不时收到这个错误:
连接关闭后不允许进行任何操作。
我记得我第一次在旧服务器上运行我的站点时遇到了同样的问题,我用“配置修复”而不是“代码修复”修复了这个问题,但我不记得我做了什么:(
我在这里读了很多帖子,但每一篇都在谈论代码修复,我不认为这是我的情况
有人能帮我吗?
非常感谢。
编辑
我在我的旧环境中发现了这一点。xml文件;也许这就是我解决问题的方法
validationQuery="SELECT 1"
testOnBorrow="true"
testOnBero:(boolean)指示对象在从池中借用之前是否会被验证。如果对象无法验证,它将从池中删除,我们将尝试借用另一个。注意-要使真值产生任何效果,必须将validationQuery参数设置为非空字符串。默认值为false
validationQuery:(String)SQL查询,用于在将连接返回给调用者之前验证来自此池的连接。如果指定,此查询不必返回任何数据,只是不能抛出SQLException。默认值为null。示例值为SELECT 1(mysql),从双重(oracle)中选择1,SELECT 1(MS Sql Server)
有人能证实吗?
在您的配置属性中,您可能使用了c3p0属性maxIdleTime,但c3p0属性是使用c3p0. prefix或hibernate. c3p0配置的。请注意,启用任何c3p0属性都会通过hibernate启发式自动启用相应的连接提供程序。在日志中看不到您正在使用c3p0。如果您没有配置数据源,那么Hibernate将使用hibernate.connection.provider_classorg.hibernate.connection.DriverManagerConnectionProvider。此连接提供程序具有内置的基本连接池,您可以为此设置hibernate.connection.pool_size,但它仅用于开发目的。切勿在正式生产环境中使用它。
您可能会无休止地讨论如何修复java.net.SocketException:管道损坏。一段时间后,您会意识到您在池中仍然保持打开的连接,这些连接在另一侧突然关闭,原因如下:
>
要帮助解决这些问题,可以使用以下提示:
使用了JDBC驱动程序的最新版本(5.1.13)。
为了遵守其中一些选项,您最好使用一个可以与Hibernate一起使用的连接池。Hibernate支持commons dbcp、c3p0和proxool。您还可以在web服务器上配置JNDI数据源以与hibernate一起使用,它有一个连接池。
您可以在JDBC连接URL中使用autoReconnect=true参数:(例如:“JDBC:mysql://localhost:3306/my-db?autoReconnect=true”)。
但是请注意,如果您的应用程序不能正确处理SQLExceptions,这可能会导致问题。
来自MySql文档:
自动重新连接
驱动程序是否应尝试重新建立陈旧和/或失效的连接?如果
我尝试使用Flyway6.0.beta2BaseJavaMigration和Mysql 出于某种原因,我得到了一个错误 无法回滚事务java.sql.sqlnontransientConnectionException:连接关闭后不允许任何操作。 原因是什么
问题内容: 我构建了一个应用程序,并在本地部署了……并且运行良好。我将其部署在远程服务器上,并开始获取主题行中提到的异常。这不是因为防火墙问题。 我更改了通过IP地址而不是本地主机进行连接的方式,现在我在本地部署的应用程序上获得了相同的超时。当我使应用程序运行超过一天时,出现此错误。 我自己提交事务或关闭会话之后,我不执行任何操作。我正在使用以下属性 引起原因:com.mysql.jdbc.exc
我已经构建了一个应用程序,使用会话维护。它使用JDBC 当应用程序部署在服务器(Apache Tomcat 6)上时。我可以登录和注销会话。工作完全正常。 现在,我让服务器继续运行24小时。现在,第二天我在输入凭据后尝试登录系统,单击登录按钮,我在网页上看到如下错误:(这是什么原因?) Http状态500 例外 组织。阿帕奇。贾斯珀。JasperException:处理JSP页面/登录时发生异常。
我真的被这个问题困住了,所以我很高兴有人能帮我! 我用java创建了一个登录页面,并在其中创建了一个MYSQL连接。如果您第一次尝试登录,代码可以正常工作,但是在您注销并再次尝试登录之后,我得到了这个错误:com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionException:连接关闭后不允许任何操作。 和DBManager
问题内容: 我被错误卡住了,这里的第42行是,请帮我解决这个问题,我在这里待了几个小时。 这是我的代码: 问题答案: 一个对象只能具有一个active对象,因此在执行时,第一个ResultSet()被关闭。 创建两个对象,一个用于,另一个用于。 引用以下内容的javadoc : 默认情况下,每个对象只能同时打开一个对象。因此,如果一个对象的读取与另一个对象的读取是交错的,则每个对象必须已由不同的对
问题内容: 我正在尝试执行getPendingSalesOrderIDs()方法,该方法调用方法selectInAsending(…)。 但这显示了一个SQLException,它说java.sql.SQLException:在ResultSet关闭后不允许进行该操作 此处db.endSelect()将关闭所有连接。 我认为问题就在于此。 问题答案: 如果关闭ResultSet,为什么不删除它(在