Mac OS High Sierra上的Java Driver Firebird 2.5

时间:2018-06-03 23:29:12

标签: java macos jdbc firebird jaybird

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

知道导致它的原因吗?

1 个答案:

答案 0 :(得分:2)

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

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

您有以下解决方法:

  1. 安装没有-1版本
  2. 的Firebird版本
  3. 修补程序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+)?) ([^-,]+)(?:[-,](.*))?");
    
  4. 我为此创建了问题JDBC-534

    这已在Jaybird 3.0.5中修复,可从Firebird JDBC driver download page获得。

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

    免责声明:我维护Jaybird。