我无法从HSQLDB连接到我的RazorSQL数据库。我在服务器模式下运行时以及尝试从RazorSQL进行连接时,我只遇到此问题。
使用Eclipse Data Source Explorer中的相同URL以及应用程序本身(Hibernate 5.2.7应用程序),我能够通过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 StackOverflow 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.jar
JDBC网址:jdbc:hsqldb:hsql://localhost/SudokuHibernate
答案 0 :(得分:0)
正如Mark Rotteveel推断的那样,答案类似于在独立服务器模式下运行的 how to get Eclipse and Maven to talk to a HSQLDB server 的相关问题。
在这种情况下, Fred Toussi ,HSQLDB项目的负责人,指出答案是修改Eclipse和Maven中使用的配置文件,引入适当版本的HSQLDB JDBC jar文件,并确保jar文件没有出现在类路径的其他任何位置。 Maven使用pom.xml
文件进行配置;所以需要确保在项目的pom.xml
文件中定义了HSQLDB的正确版本。
在我的情况下,我正在使用的RazorSQL产品恰好使用HSQLDB作为自身的嵌入式数据库。如果我一直在使用任何其他Java数据库,我可能没有遇到这个问题。但是,由于RazorSQL产品已经加载了自己版本的HSQLDB jar文件,因此我在配置中为数据库连接指定的内容并不重要。它没有用。
无论我如何更改我的驱动程序配置文件或我的连接配置文件,都会加载HSQLDB jar文件的唯一版本,是RazorSQL已经使用的原始jar文件,RazorSQL附带了该文件。 (注意:这是真的,除非 RazorSQL变得花哨,它决定使用不同的类加载器,以及Java应用程序服务器常用的其他一些技巧来解决这些问题)。
根据Dan Richardson的建议,来自RazorSQL,通过修改我的配置,实际答案是不,但是通过更改{{3>}的内容3}}分配本身。我需要替换RazorSQL应用程序使用的jar
文件。此jar
文件位于RazorSQL的Mac应用程序文件夹中。此位置通常为/Applications/RazorSQL.app/Contents/Java/drivers/hsqldb
。
(注意:如果您不熟悉如何打开Mac应用程序文件夹,只需右键单击/Applications
目录中的RazorSQL文件夹名称,然后使用“显示包装内容“菜单选项)。在我的情况下,我将原始hsqldb.jar
文件重命名为hsqldb_2.3.2.jar
文件,然后我复制了hsqldb.jar
的最后一个分发。