0

我无法从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'"

注意:这是一个不同的问题,然后是类似的 StackOverflow 问题,因为我自己的所有配置文件都从同一个 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.jar
JDBC URLjdbc:hsqldb:hsql://localhost/SudokuHibernate

4

1 回答 1

0

正如Mark Rotteveel所推断的,答案类似于有关如何让 Eclipse 和 Maven 与在独立服务器模式下运行的 HSQLDB 服务器对话的相关问题。

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

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

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

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

(注意:如果您不熟悉如何打开 Mac 应用程序文件夹,只需右键单击目录中的RazorSQL文件夹名称,/Applications然后使用“显示包内容”菜单选项即可)。就我而言,我将原始hsqldb.jar文件重命名为hsqldb_2.3.2.jarfile,然后在hsqldb.jar.

于 2017-03-08T01:28:05.253 回答