【问题标题】:How to shutdown Derby in-memory database Properly如何正确关闭 Derby 内存数据库
【发布时间】: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


【解决方案1】:

URL“jdbc:derby:memory:eh;shutdown=true”会产生预期的 08006 错误代码,但实际上并未从内存中删除数据库。如果稍后,您尝试使用“jdbc:derby:memory:eh;create=true”创建一个新数据库,您将收到一条错误消息,提示该数据库已存在。

幸运的是,从 Derby 10.6.1.0(2010 年 5 月 17 日发布)开始,实际上可以使用“jdbc:derby:memory:eh;drop=true”形式的 URL 删除内存数据库.请参阅release notes 和页面Using in-memory databases

【讨论】:

    【解决方案2】:

    XJ015(带有SQLCODE 50000)是完全系统关闭的预期(成功)SQLSTATE。另一方面,08006(带有SQLCODE 45000)是预期的SQLSTATE,仅用于关闭单个数据库。

    DriverManager.getConnection("jdbc:derby:;shutdown=true");
    

    关闭整个系统,结果应该是XJ015

    【讨论】:

      【解决方案3】:

      我相信您的第一个代码示例很好。我相信您看到的 SQL 状态差异是因为您运行的是嵌入式 Derby,但您看到的示例代码(带有 SQL 状态 XJ015)是在客户端-服务器配置中运行的。

      正如您所说,SQLNonTransientConnectionException 是 SQLException 的子类,所以我很困惑为什么您认为您没有得到正确类型的异常。

      【讨论】:

      • 感谢您的回复。我最终得出了与您相同的结论,但除了您同意之外,仍然没有证据表明这是正确的。我什至尝试搜索 Derby Source。我引用的示例是 WwdEmbedded.java,它是一个嵌入式示例。此外,文档表明期望 SQLException... 不是 SQLException 或后代。也就是说,我确实接受这是一个可能的想法,这就是我首先提到这种关系的原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      相关资源
      最近更新 更多