java - 插入/获取数据时 mySQL 中的 MySQLNonTransientConnectionException

标签 java mysql junit connection database-connection

我遇到了这个异常

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

...调用此方法时:

public class DatabaseDataSetter {

    private static DatabaseConnection database = DatabaseConnection
            .getInstance(); 

    private static Connection conn = database.getConnection();
    private static ArrayList<String> errors = new ArrayList<String>();

    //Clears complete database.
    public static void dropDatabase() {

        try {
            ps = conn.prepareStatement("DROP DATABASE planning_data"); //--> Execption!
            ps.execute();
            ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }   
    }

我目前正在 JUnit 中进行测试。在测试方法中,我只调用了方法DatabaseDataSetter.dropDatabase()以静态的方式。从那时起,没有连接是打开的。调用后,使用了一个连接实例,为什么它似乎已经关闭了?连接类本身已经过测试并按预期提供连接实例。

assertEquals(false,db.getConnection().isClosed());当在 DatabaseConnection 中进行测试时,但是当 DatabaseDataSetter 时是真的被称为。

最佳答案

将 autoReconnect 属性设置为 true。

在 hibernate 状态下……就像这样:

<property> name="hibernate.connection.url">jdbc:mysql://127.0.0.1/database?autoReconnect=tr‌ue</property>

关于java - 插入/获取数据时 mySQL 中的 MySQLNonTransientConnectionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32287310/

相关文章:

java 将 ArrayList<StringBuilder> 转换为 ArrayList<String>

java - 不同工作副本(代码库)的单独本地存储库

java - Selenium RC-打印所有包含文本的链接

php - UTF8 -> Latin1 难度,PHP

java - 动态创建作业的 Spring 批量测试

java - 在 Java 中测试紧密耦合的类

java - 如何在camel路线构建器中分割对象

mysql - Pentaho错误: Duplicate entry for non primary key

mysql - SQL 查询将时间序列测量结果分组到单个记录中?

java - 在使用 JUnit 和 MockMVC 时如何测试模型属性的属性不为 null?