【发布时间】:2011-01-19 10:48:47
【问题描述】:
我将 derby 用作嵌入式数据库。此外,我正在使用它的内存数据库选项进行单元测试。
我不知道如何正确关闭(A quick look at the code) Derby 数据库。我相信它适用于标准数据库,但在内存数据库上尝试类似代码时会遇到不同的异常。
我将省略细节,如果需要其他感觉,我会添加它们。
基本上,我正在尝试以这两种方式关闭我的数据库,其中我的内存数据库一直被称为“eh”:
DriverManager.getConnection("jdbc:derby:memory:eh;shutdown=true");
然后:
DriverManager.getConnection("jdbc:derby:eh;shutdown=true");
前者结果为an exception but not the one expected。详情如下:
java.sql.SQLNonTransientConnectionException: 数据库 'memory:eh' 关闭。
后者导致
java.sql.SQLException:找不到数据库“eh”。
根据我的了解,我们需要SQLException,但不是我们收到的那个。另一方面,SQLNonTransientConnectionException 错误似乎更合适,但不是正确的类型(尽管它是从 SQLException 派生的),也没有正确的状态代码。状态代码最终为:08006。
我的示例代码说明了 SQLException 的 SQL 状态为“XJ015”。
注意:我引用的示例是:WwdEmbedded Program (Java Code)。
【问题讨论】:
-
使用 drop 而不是 shutdown 似乎是你想要的。关机似乎没有删除数据库。
标签: java derby shutdown in-memory-database