Драйвер Java Firebird 2.5 для Mac OS High Sierra - PullRequest
0 голосов
/ 04 июня 2018

Я клонировал проект Java в NetBeans 8.2 в Mac OS High Sierra, который использует базу данных Firebird с использованием jars jaybird-2.2.8.jar и jaybird-full-2-2-8.jar, и он хорошо работает на компьютерах с Windows 8.2 и 10 и Linux Ubuntu 16.04.Я использую движок Firebird в команде разработчиков 2.5.8.и Java 1.8.

Использование стандартного инструмента Firebird isql в терминале работает нормально, а Flamerobin также работает, указывая, что он установлен правильно.

Ошибка, которую выдает в NetBeans, SquirreL SQL (Java), DBeaver (Java) выглядит следующим образом:

Unexpected Error occurred attempting to open an SQL connection.
class org.firebirdsql.gds.impl.GDSServerVersionException: information type inappropriate for object specified
Version string "UI-V2.5.8.27089-1 Firebird 2.5DUI-V2.5.8.27089-1 Firebird 2.5/tcp (MacBook-Air-de-Ulises.local)/P10" does not match expected format
Expected engine version format: [platform]-[type][major version].[minor version].[variant].[build number] [server name]

Есть идеи, что его вызывает?

1 Ответ

0 голосов
/ 04 июня 2018

Номер версии, сообщенный вашей установкой Firebird, не соответствует формату, ожидаемому Jaybird.Проблема заключается в том, что -1 in UI-V2.5.8.27089-1.

Firebird обычно сообщает что-то вроде UI-V2.5.8.27089 ..., но сборку для MacOS необходимо было перестроить из-за проблем с первоначальной сборкой.Это создало ревизию 1, и Jaybird не ожидает, что эта ревизия будет включена в строку номера версии.

У вас есть следующие обходные пути:

  1. Установите версию Firebird, которая невозьмите -1 ревизию
  2. Патч org.firebirdsql.gds.impl.GDSServerVersion и замените его в банке Jaybird.Изменение, которое вам нужно сделать, заменяет

    private static final Pattern VERSION_PATTERN = 
        Pattern.compile("((\\w{2})-(\\w)(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)) ([^-,]+)(?:[-,](.*))?");
    

    на

    private static final Pattern VERSION_PATTERN = 
        Pattern.compile("((\\w{2})-(\\w)(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)(?:-\\S+)?) ([^-,]+)(?:[-,](.*))?");
    

Я создал проблему JDBC-534 для этого.

Это было исправлено в Jaybird 3.0.5, который доступен со страницы загрузки драйвера JDBC Firebird .

Учитывая, что вы использовали относительно старую версию Jaybird 2.2,Я предлагаю вам взглянуть на заметки о выпуске, чтобы увидеть все изменения и исправления, начиная с версии 2.2.8.

Отказ от ответственности: я поддерживаю Jaybird.

...