mySQL 插入/获取数据时出现 MySQLNonTransientConnectionException
MySQLNonTransientConnectionException in mySQL when inserting / getting data
我遇到了这个异常
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()
。从那时起,没有连接是打开的。调用后,使用了一个连接实例,为什么它似乎已经关闭了? connection-class 本身已经过测试并按预期提供了 connection-instances。
assertEquals(false,db.getConnection().isClosed());
当在 DatabaseConnection
中进行测试时,但在调用 DatabaseDataSetter
时为真。
可能是您的函数 (Connection conn = database.getConnection();
) 没有提供任何连接,所以您得到了这个连接。如果您使用的是 JNDI,那么可能是您的连接池大小耗尽,无法为您提供连接。如果您使用的是 JNDI,那么请检查 JNDI 日志以了解此类错误。
设置自动重新连接属性 true。
在休眠状态下...就像这样:
<property> name="hibernate.connection.url">jdbc:mysql://127.0.0.1/database?autoReconnect=true</property>
我遇到了这个异常
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()
。从那时起,没有连接是打开的。调用后,使用了一个连接实例,为什么它似乎已经关闭了? connection-class 本身已经过测试并按预期提供了 connection-instances。
assertEquals(false,db.getConnection().isClosed());
当在 DatabaseConnection
中进行测试时,但在调用 DatabaseDataSetter
时为真。
可能是您的函数 (Connection conn = database.getConnection();
) 没有提供任何连接,所以您得到了这个连接。如果您使用的是 JNDI,那么可能是您的连接池大小耗尽,无法为您提供连接。如果您使用的是 JNDI,那么请检查 JNDI 日志以了解此类错误。
设置自动重新连接属性 true。
在休眠状态下...就像这样:
<property> name="hibernate.connection.url">jdbc:mysql://127.0.0.1/database?autoReconnect=true</property>