【问题标题】:Shutting down derby Network server doesnt delete db.lck关闭 derby 网络服务器不会删除 db.lck
【发布时间】:2011-05-18 09:30:40
【问题描述】:

我正在尝试使用默认端口从我的 Java 应用程序以网络服务器模式启动 Derby。服务器启动成功。现在我尝试连接到服务器上名为“myDB”的数据库。连接已建立,db.lck 已成功创建。然后,我进行了一些事务,优雅地提交并关闭连接。我看到 db.lck 仍然存在。然后我关闭了网络服务器。我希望在所有这些操作结束时删除 db.lck 文件。但它仍然存在。 (PS:操作系统是Windows)

以下是代码:

1) 启动服务器:

System.setProperty("derby.system.home", "C:\\SI\\testDerby");
System.setProperty("derby.drda.traceDirectory", "C:\\SI\\trace");
System.setProperty("derby.drda.traceAll", "true");
System.setProperty("derby.drda.logConnections", "true");
System.setProperty("derby.connection.requireAuthentication", "false");

serverHandle = new NetworkServerControl();
// Write server console messages to system output
serverHandle.start(new PrintWriter(System.out));

2) 连接数据库

final String PORT = 1527;
String driver = "org.apache.derby.jdbc.ClientDriver";
String dbName = "myDB";
String connectionURL = "jdbc:derby:" + "//localhost:" 
            + PORT  + "/" + dbName + ";create=true";
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(connectionURL);
Statement stmt = conn.createStatement();
boolean success = stmt.execute("DROP TABLE USERS");
PreparedStatement statement = conn.prepareStatement("CREATE TABLE USERS (id BIGINT not null, name VARCHAR(20))");
success = statement.execute();
conn.commit();
conn.close();

3) 关闭服务器

serverHandle.shutdown();

谁能帮我解决这个问题?当我关闭连接或关闭数据库时,我需要删除 db.lck 文件。我想我错过了一些东西。提前致谢。

【问题讨论】:

    标签: java database derby


    【解决方案1】:

    也许关闭服务器并不是关闭数据库;尝试在关闭服务器之前执行显式数据库关闭,如下所述:http://db.apache.org/derby/docs/10.8/devguide/tdevdvlp40464.html#tdevdvlp40464

    【讨论】:

    • 感谢您的回复。我认为 URL 中提到的关闭数据库的方法仅适用于嵌入式 derby,而不适用于网络服务器。我对网络服务器进行了同样的尝试(即,调用 getConnection 并在 URL 后附加“;shutdown=true”)。我遇到了 SQLNonTransientConnectionException,其根本原因如下: 由:org.apache.derby.client.am.SqlException DERBY SQL 错误:SQLCODE:-1,SQLSTATE:08006,SQLERRMC:数据库“myDB”关闭。
    • 但是是的,这种情况下的锁定文件确实被删除了。知道为什么会在这里抛出异常吗?
    • 这就是德比的行为方式。关闭数据库会引发异常。这有点尴尬,但 SQLSTATE 非常容易识别,所以我建议您简单地捕获并忽略该异常。
    猜你喜欢
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多