How to shutdown Derby in-memory database Properly

后端 未结 3 1426
一个人的身影
一个人的身影 2020-12-28 19:24

I\'m using derby as an embedded database. Furthermore, I\'m using it\'s in-memory database option for my unit tests.

What I can\'t figure out is how to properly shu

相关标签:
3条回答
  • 2020-12-28 20:14

    I believe that your first code example is fine. The SQL State difference that you are seeing, I believe, is because you are running Derby embedded, but the example code that you saw (with SQL state XJ015) was running in a client-server configuration.

    As you noted, the SQLNonTransientConnectionException is a subclass of SQLException, so I am confused as to why you think you are not getting the right type of exception.

    0 讨论(0)
  • 2020-12-28 20:19

    XJ015 (with SQLCODE 50000) is the expected (successful) SQLSTATE for complete system shutdown. 08006 (with SQLCODE 45000), on the other hand, is the expected SQLSTATE for shutdown of only an individual database.

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

    Shuts down the entire system and should result in XJ015.

    0 讨论(0)
  • 2020-12-28 20:19

    The URL "jdbc:derby:memory:eh;shutdown=true" results in the expected 08006 error code, but doesn't actually remove the DB from memory. If later on, you try to create a new database with "jdbc:derby:memory:eh;create=true", you'll get an error saying that the database already exists.

    Fortunately, as of Derby 10.6.1.0 (released on May 17, 2010), it is possible to actually drop an in-memory database using a URL of the form "jdbc:derby:memory:eh;drop=true". See the release notes and the page Using in-memory databases.

    0 讨论(0)
提交回复
热议问题