В соединении с базой данных Derby 10.11.1.1 отказано из-за рабочего Java-кода инструмента ij

В настоящее время у меня есть база данных 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 и ничего другого? Я что-то делаю не так?


person RST    schedule 11.03.2015    source источник


Ответы (1)


В вашем сеансе ij используется более старая версия Derby.

Это контролируется CLASSPATH, который устанавливается при запуске ij.

Внимательно посмотрите на сценарий или команду, которую вы используете для запуска ij, чтобы узнать, какая версия Derby запущена.

Затем настройте CLASSPATH, который вы используете при запуске ij, чтобы он использует Derby 10.11, версию, которую использует ваше приложение Java.

person Bryan Pendleton    schedule 11.03.2015
comment
Я загрузил последнюю версию инструмента ij, чтобы соответствовать версиям: db.apache.org/derby/releases/release-10.11.1.1.cgi - person RST; 12.03.2015
comment
У вас по-прежнему могут быть другие версии Derby в вашей системе, и это могут быть те, которые использует ваш сеанс ij. Копии Derby поставляются в комплекте с JDK, IDE, серверами приложений и многими другими инструментами. Вы внимательно изучили свой КЛАСС? - person Bryan Pendleton; 12.03.2015
comment
Простите, что не знаю, как именно указать на 10.11.1.1? В настоящее время у меня есть derby-10.11.11.1 / bin, очевидно, в моем PATH (Linux), и это то, что имеет в виду инструмент ij. Похоже, что при запуске инструмента ij он отвечает 10,8? - person RST; 12.03.2015
comment
Извини, я не хочу показаться грубым. Вероятно, Derby 10.8 был связан с копией JDK 1.7 на вашем компьютере и находится в $ JAVA_HOME / db. Так что сделайте: экспортируйте CLASSPATH = / path / to / derby / db-derby-10.11.11.1 / lib / derbyrun.jar и посмотрите, запустит ли ij версию Derby 10.11. - person Bryan Pendleton; 13.03.2015