java - 关闭 derby 网络服务器不会删除 db.lck

标签 java database derby

我正在尝试使用默认端口从我的 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 文件。我想我错过了什么。提前致谢。

最佳答案

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

关于java - 关闭 derby 网络服务器不会删除 db.lck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6042563/

相关文章:

java - 从 Java Derby 数据库中选择特定记录

java - wsimport 命令失败并出现错误

java - org.eclipse.ui.menus 的名称过滤器 - 也适用于编辑器 View

sql - 为什么 SELECT * 被认为是有害的?

php - 如何将数据库属性derby.database.sqlAuthorization更改为 'TRUE'

java - 将 Java.sql.Date 插入 Derby 数据库

java - 如何解决这些错误

java - 如何在 MacOS 上安装特定的 JDK(jdk1.8.0_152.jdk)?

python - 快速存储、查找和检索数据库设计

java - Flyway 是否知道数据库状态或它是否专门验证迁移文件的不变性?