Java Driver Firebird 2.5 on Mac OS High Sierra



我在Mac OS High Sierra上的NetBeans 8.2中克隆了一个Java项目,该项目使用使用jarsjaybird-2.2.8.jarjaybird-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,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]

知道是什么原因造成的吗?

Firebird 安装报告的版本号与 Jaybird 预期的格式不匹配。问题是UI-V2.5.8.27089-1-1.

Firebird通常会报告类似UI-V2.5.8.27089 ...的内容,但由于初始构建的问题,MacOS的构建需要重建。这创建了一个修订版 1,Jaybird 不希望该修订版包含在版本号字符串中。

您有以下解决方法:

  1. 安装没有-1修订版的 Firebird 版本

  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 和 2.2.15 中修复,可从 Firebird JDBC 驱动程序下载页面获得。

鉴于您使用的是相对较旧的 Jaybird 2.2 版本,我建议您查看发行说明以查看自版本 2.2.8 以来的所有更改和修复。

免责声明:我维护Jaybird。

相关内容

  • 没有找到相关文章

最新更新