Java Derby:另一个Derby实例可能已经启动了数据库

Java Derby:另一个Derby实例可能已经启动了数据库,java,derby,Java,Derby,我想在网络服务器模式下使用Derby,并按照他们网站上的说明进行操作 开始德比: /opt/glassfish/4.0/javadb/bin/NetworkServerControl start -noSecurityManager Sun Apr 13 23:47:57 CEST 2014 : Apache Derby Network Server - 10.9.1.0 - (1344872) started and ready to accept connections on port 1

我想在网络服务器模式下使用Derby,并按照他们网站上的说明进行操作

开始德比:

/opt/glassfish/4.0/javadb/bin/NetworkServerControl start -noSecurityManager

Sun Apr 13 23:47:57 CEST 2014 : Apache Derby Network Server - 10.9.1.0 - (1344872) started and ready to accept connections on port 1527
连接到ij:

$ /opt/glassfish/4.0/javadb/bin/ij
ij version 10.9
ij> connect 'jdbc:derby:testDB';
ij> create table testt ( x varchar(200), y varchar(200), z varchar(13));
0 rows inserted/updated/deleted
ij> select * from testt;

X   

|Y        



|Z         
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


0 rows selected
ij> commit;
ij> 
在Java中连接到Derby:

static{

        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

public void readData(){
   final Connection connection = DriverManager.getConnection("jdbc:derby://localhost:1527/testDB");
   ....
}
DriverManager.getConnection()
失败,原因是:

java.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040, 
SQLERRMC: Failed to start database 'testDB' with class loader sun.misc.Launcher$AppClassLoader@23137792, see the next exception for details.::
SQLSTATE: XSDB6Another instance of Derby may have already booted the database

我不是刚刚在网络服务器模式下启动了derby吗?为什么我会犯这个错误

您的ij连接没有:

  connect 'jdbc:derby:testDB';
这意味着它没有连接到网络服务器,而是直接使用嵌入式驱动程序打开数据库

如果您已指定:

  connect 'jdbc:derby://localhost:1527/testDB';
然后两个应用程序(IJ和您的程序)都将通过客户端驱动程序进行连接,并且第二个连接不会被拒绝。

删除以下文件

../metastore_db/dbex.lck和../metastore_db/db.lck


谢谢

虽然这个问题已经得到了回答,但以防其他人在glassfish/payara容器上遇到此错误


我在服务器重新启动时遇到了这个错误,在部署应用程序时也遇到了这个错误,问题是,即使在服务器关闭并重新启动之后,相关的java进程也没有被终止。。。从终端终止进程,然后启动应用程序,解决了错误

应正确关闭数据库。尝试注册ServletContextListener并在其“contextDestroyed()”方法调用中:
DriverManager.getConnection(“jdbc:derby:mydatabase;shutdown=true”)。这将引发您可以忽略的信息异常。