【问题标题】:Connection to Derby Database 10.11.1.1 being refused with ij tool working java code使用 ij 工具工作的 Java 代码拒绝连接到 Derby 数据库 10.11.1.1
【发布时间】:2015-03-11 19:53:05
【问题描述】:

目前我有一个 Derby 数据库...版本 10.11.1.1 通过 Java 应用程序创建,该应用程序仅在与运行任意查询的 Java 应用程序通信时才起作用。 Maven依赖如下:

   <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>10.11.1.1</version>
   </dependency>

当我尝试使用 ij 工具或任何其他第三方应用程序时:

i.e. connect 'jdbc:derby:/home/username/dev/db-agents/TESTDB';

不能这样做,抱怨正在使用错误的版本,如下:

Caused by: java.sql.SQLException: Database at /home/username/dev/db-agents/TESTDB has an incompatible format with the current version of the software.  The database was created by or upgraded by version 10.11.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    ... 12 more
Caused by: ERROR XSLAN: Database at /home/username/dev/db-agents/TESTDB has an incompatible format with the current version of the software.  The database was created by or upgraded by version 10.11.
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.store.raw.log.LogToFile.readControlFile(Unknown Source)
    at org.apache.derby.impl.store.raw.log.LogToFile.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
    at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source)
    at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.bootLogFactory(Unknown Source)
    at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.setRawStoreFactory(Unknown Source)
    at org.apache.derby.impl.store.raw.RawStore.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
    at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source)
    at org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
    at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source)
    at org.apache.derby.impl.db.BasicDatabase.bootStore(Unknown Source)
    at org.apache.derby.impl.db.BasicDatabase.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(Unknown Source)

我不明白为什么我只能从 Java 应用程序进行连接,而不能通过其他方式进行连接?有什么特别的地方我做错了吗?

【问题讨论】:

    标签: java sql derby


    【解决方案1】:

    您的 ij 会话使用的是旧版本的 Derby。

    这由运行 ij 时设置的 CLASSPATH 控制。

    仔细查看您用来启动 ij 的脚本或命令,看看它正在运行哪个版本的 Derby。

    然后调整您在run ij 时使用的 CLASSPATH,使其使用 Derby 10.11,这是您的 Java 应用程序正在使用的版本。

    【讨论】:

    • 我下载了最新版本的 ij 工具以匹配版本:db.apache.org/derby/releases/release-10.11.1.1.cgi
    • 您的系统上仍然可能有其他版本的 Derby,而这些版本可能是您的 ij 会话正在使用的版本。 Derby 的副本与 JDK、IDE、应用程序服务器和许多其他工具一起打包。你仔细检查了你的 CLASSPATH 吗?
    • 对不起,我不知道如何准确地将其指向 10.11.1.1 ?我目前显然在我的 PATH (Linux) 中有 derby-10.11.11.1/bin,这就是 ij 工具所指的。运行 ij 工具时会显示它以 10.8 的响应?
    • 对不起,我不是想无礼。 Derby 10.8 可能是在您的机器上与 JDK 1.7 的副本捆绑在一起的,它位于 $JAVA_HOME/db 中。这样做:“export CLASSPATH=/path/to/derby/db-derby-10.11.11.1/lib/derbyrun.jar”,然后看看 ij 是否运行 10.11 版本的 Derby。
    猜你喜欢
    • 2012-12-30
    • 2015-04-13
    • 1970-01-01
    • 2019-08-23
    • 2012-05-12
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多