【问题标题】:Java Driver Firebird 2.5 on Mac OS High SierraMac OS High Sierra 上的 Java 驱动程序 Firebird 2.5
【发布时间】:2018-11-13 06:37:32
【问题描述】:

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

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

【问题讨论】:

  • 这可能更适合Database Administrators
  • @Dev-iL 不,它不会,这是一个与编程相关的问题。
  • @MarkRotteveel (在看到你的答案之前)很难说出一种或另一种方式,因为 OP 竭尽全力描述为什么他们认为他们的系统设置正确(这意味着他们怀疑它可能不会)。 OTOH,我们并没有真正看到任何与访问数据库相关的代码,这可能表明它被认为是正确的(即基于已发布的示例)。 ||根据您对相关库的深入熟悉的回答,这似乎不是“用户的错”,而是毕竟 - 设置错误。这符合Database Administrators 的条件吗?也许……
  • @Dev-iL 这不是设置错误,而是 OP 正在使用的 JDBC 驱动程序中的错误,这使其成为编程问题。

标签: java macos jdbc firebird jaybird


【解决方案1】:

您的 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 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。

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2018-05-19
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多