Mac OS High Sierra 上的 Java 驱动程序 Firebird 2.5

标签 java macos jdbc firebird jaybird

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

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

最佳答案

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

关于Mac OS High Sierra 上的 Java 驱动程序 Firebird 2.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671891/

相关文章:

Java/重构开关盒

python - 无法在 Mac OS X 10.9.5 上安装 uWSGI

objective-c - 检测硬件/网络适配器更改

java - 跨线程共享一个 jdbc "Connection"

java - 连接关闭后 JDBC 回滚

Java 正则表达式 - 多次替换

java - 在 Android 中授予线程低优先级

mysql - R - 在终端中运行命令并将输出保存到数据帧

java - 具有聚合/组合的 Spring Framework JDBC DAO

java - 适用于 Android、Java、iPhone、Windows Mobile 的签名算法