Java Mac OS High Sierra 上的驱动程序 Firebird 2.5
Java Driver Firebird 2.5 on Mac OS High Sierra
我在 Mac OS High Sierra 上的 NetBeans 8.2 中克隆了一个 Java 项目,该项目使用了使用 jars jaybird-2.2.8.jar
和 jaybird-full-2-2-8.jar
的 Firebird 数据库,它在 Windows 8.2 和 10,以及 Linux Ubuntu 16.04 的计算机上运行良好。我在开发组使用的Firebird引擎是2.5.8。和 Java 1.8.
在终端使用Firebird的默认工具isql
可以正常使用,Flamerobin也可以,说明安装正常
它在NetBeans,SquirreLSQL(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]
知道是什么原因造成的吗?
您的 Firebird 安装报告的版本号与 Jaybird 预期的格式不匹配。问题是 UI-V2.5.8.27089-1
中的 -1
。
Firebird 通常会报告类似 UI-V2.5.8.27089 ...
的内容,但由于初始构建存在问题,需要重新构建适用于 MacOS 的构建。这创建了修订版 1,Jaybird 不希望该修订版包含在版本号字符串中。
您有以下解决方法:
安装没有 -1
修订版的 Firebird 版本
补丁 org.firebirdsql.gds.impl.GDSServerVersion
并将其替换到您的 Jaybird jar 中。您需要做的更改是替换
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 和 2.2.15 中修复,可从 Firebird JDBC driver download page。
鉴于您使用的是相对较旧的 Jaybird 2.2 版本,我建议您查看发行说明以了解自版本 2.2.8 以来的所有更改和修复。
免责声明:我维护 Jaybird。
我在 Mac OS High Sierra 上的 NetBeans 8.2 中克隆了一个 Java 项目,该项目使用了使用 jars jaybird-2.2.8.jar
和 jaybird-full-2-2-8.jar
的 Firebird 数据库,它在 Windows 8.2 和 10,以及 Linux Ubuntu 16.04 的计算机上运行良好。我在开发组使用的Firebird引擎是2.5.8。和 Java 1.8.
在终端使用Firebird的默认工具isql
可以正常使用,Flamerobin也可以,说明安装正常
它在NetBeans,SquirreLSQL(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]
知道是什么原因造成的吗?
您的 Firebird 安装报告的版本号与 Jaybird 预期的格式不匹配。问题是 UI-V2.5.8.27089-1
中的 -1
。
Firebird 通常会报告类似 UI-V2.5.8.27089 ...
的内容,但由于初始构建存在问题,需要重新构建适用于 MacOS 的构建。这创建了修订版 1,Jaybird 不希望该修订版包含在版本号字符串中。
您有以下解决方法:
安装没有
-1
修订版的 Firebird 版本补丁
org.firebirdsql.gds.impl.GDSServerVersion
并将其替换到您的 Jaybird jar 中。您需要做的更改是替换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 和 2.2.15 中修复,可从 Firebird JDBC driver download page。
鉴于您使用的是相对较旧的 Jaybird 2.2 版本,我建议您查看发行说明以了解自版本 2.2.8 以来的所有更改和修复。
免责声明:我维护 Jaybird。