RazorSQL 导致 HSQLDB 抛出 org.hsqldb.HsqlException:需要大于 '2.1.0.0' 的客户端驱动程序版本。 HSQLDB 服务器版本是 '2.3.4'

Posted

技术标签:

【中文标题】RazorSQL 导致 HSQLDB 抛出 org.hsqldb.HsqlException:需要大于 \'2.1.0.0\' 的客户端驱动程序版本。 HSQLDB 服务器版本是 \'2.3.4\'【英文标题】:RazorSQL causes HSQLDB to throw org.hsqldb.HsqlException: Client driver version greater than '2.1.0.0' is required. HSQLDB server version is '2.3.4'RazorSQL 导致 HSQLDB 抛出 org.hsqldb.HsqlException:需要大于 '2.1.0.0' 的客户端驱动程序版本。 HSQLDB 服务器版本是 '2.3.4' 【发布时间】:2017-03-07 01:19:19 【问题描述】:

我无法从RazorSQL 连接到我的HSQLDB 数据库。只有当我在服务器模式下运行并尝试从 RazorSQL 连接时,我才会遇到此问题。

使用来自 Eclipse 数据源资源管理器和应用程序本身(这是一个 Hibernate 5.2.7 应用程序)的相同 URL,我能够通过 URL“jdbc:hsqldb:hsql://localhost/SudokuHibernate”成功连接到我的数据库。由于我在服务器模式下运行它,我可以同时连接。

(注意:我不必有多个并发连接,但它使调试更容易)。数据库正在通过命令行以服务器模式运行...

java -cp ../libs/hsqldb-2.3.4/hsqldb/lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:/Users/arick/src/databases/SudokuHibernate --dbname.0 SudokuHibernate

尝试从RazorSQL 连接时,数据库控制台会显示错误消息。 “org.hsqldb.HsqlException: 需要大于 '2.1.0.0' 的客户端驱动程序版本。HSQLDB 服务器版本是 '2.3.4'”

注意:这是一个与 a similar *** question 不同的问题,因为我自己的所有配置文件都从同一个 jar 文件显式引用同一个 JDBC 驱动程序。然而,正如Fred T 所指出的,HSQLDB 对“2.1.0.0”的引用有些误导。真的只是说客户端和服务端有两个不同版本的JDBC驱动。

在数据库抛出版本不匹配错误的同时,RazorSQL 会显示一个带有错误消息的对话框:

ERROR: An error occurred while trying to make a connection to the database: 
JDBC URL: jdbc:hsqldb:hsql://localhost/SudokuHibernate
connection exception: connection failure: java.io.EOFException

以下是我的RazorSQL 连接配置文件。

RazorSQL 配置文件 驱动位置:/Users/arick/src/libs/hsqldb-2.3.4/hsqldb/lib/hsqldb.jarJDBC URL:jdbc:hsqldb:hsql://localhost/SudokuHibernate

【问题讨论】:

与您的说法相反,RazorSQL 使用的是 HSQLDB 驱动程序版本 2.1(或至少不是 2.3.4)。所以和副本是一样的。 Maven and Hsqldb: org.hsqldb.HsqlException: Client driver version greater than '2.1.0.0' is required. HSQLDB server version is '2.3.4' (on mac)的可能重复 【参考方案1】:

正如Mark Rotteveel 推断的那样,答案类似于在独立服务器模式下运行的关于how to get Eclipse and Maven to talk to a HSQLDB server 的相关问题。

在这种情况下,HSQLDB 项目的负责人 Fred Toussi 指出答案是修改 Eclipse 和 Maven 中使用的配置文件,以将HSQLDB JDBC jar 文件的适当版本,并确保 jar 文件没有出现在类路径的其他任何地方。 Maven 使用pom.xml 文件进行配置;所以需要确保在项目的pom.xml 文件中定义了正确版本的HSQLDB。

在我的情况下,我使用的RazorSQL 产品恰好使用HSQLDB 作为其自身的嵌入式数据库。如果我一直在使用任何其他 Java 数据库,我可能不会遇到这个问题。但是,由于RazorSQL 产品已经加载了它自己版本的HSQLDB jar 文件,所以我在配置中为数据库连接指定的内容并不重要。它不会起作用。

无论我如何更改 my 驱动程序配置文件或 my 连接配置文件,要加载的唯一版本的 HSQLDB jar 文件是原始 jar 文件,RazorSQL 已在使用,RazorSQL 附带。 (注意:这是真的,除非RazorSQL 喜欢上了,它决定使用不同的类加载器,以及 Java 应用程序服务器常用的一些其他技巧来解决这些问题)。

根据RazorSQL 的 Dan Richardson 的建议,实际答案是不是通过修改 my 配置,而是通过更改 RazorSQL 分布的内容本身。我需要替换 RazorSQL 应用程序使用的 jar 文件。此jar 文件位于RazorSQL 的Mac 应用程序文件夹中。此位置通常位于/Applications/RazorSQL.app/Contents/Java/drivers/hsqldb

(注意:如果你不熟悉如何打开Mac app文件夹,你只需在/Applications目录下的RazorSQL文件夹名称上右击,使用“显示包内容” 菜单选项)。在我的例子中,我将原来的 hsqldb.jar 文件重命名为 hsqldb_2.3.2.jar 文件,然后我复制了 hsqldb.jar 的最后一个分布。

【讨论】:

以上是关于RazorSQL 导致 HSQLDB 抛出 org.hsqldb.HsqlException:需要大于 '2.1.0.0' 的客户端驱动程序版本。 HSQLDB 服务器版本是 '2.3.4'的主要内容,如果未能解决你的问题,请参考以下文章

UcanaccessDriver 抛出 ExceptionInInitializerError 原因:java.lang.RuntimeException: org.hsqldb.jdbc.JDBCD

测试抛出异常说用户缺少权限或找不到对象:将 HSQLDB 更新到 2.0.0 后的 REFERENTIAL_INTEGRITY

SQLSyntaxErrorException:由于 HSQLDB 中的“COALESCE”导致的数据类型异常

未在 H2 数据库上执行的 Sql 查询

LibreOffice Base 的 HSQLDB 触发器更新

HSQLDB 在 Windows 上运行,但在 Linux 上抛出异常