2017-03-07 32 views
0

我无法连接到我的HSQLDB数据库从RazorSQL。我在服务器模式下运行时以及我尝试从RazorSQL进行连接时遇到此问题。RazorSQL导致HSQLDB抛出org.hsqldb.HsqlException:需要大于'2.1.0.0'的客户端驱动程序版本。 HSQLDB服务器版本是'2.3.4'

从Eclipse Data Source Explorer和应用程序本身(它是一个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 StackOverflow question,因为所有的我自己的配置文件明确地引用相同的JDBC驱动程序,从同一个jar文件。但是,正如Fred T指出的那样,对“2.1.0.0”的提及,编号为HSQLDB,有点令人误解。它实际上只是说客户端和服务器有两个不同版本的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

+0

与你声称相反,RazorSQL使用HSQLDB驱动程序版本2.1(或至少不是2.3.4)。所以它与重复相同。 –

+0

[Maven和Hsqldb可能有重复:org.hsqldb.HsqlException:需要大于'2.1.0.0'的客户端驱动程序版本。 HSQLDB服务器版本是'2.3.4'(在mac上)](http://stackoverflow.com/questions/40586646/maven-and-hsqldb-org-hsqldb-hsqlexception-client-driver-version-greater-than) –

回答

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文件的唯一版本,是原来的jar文件,这是已在使用RazorSQL ,并且与RazorSQL一起。 (注意:这是真的,除非RazorSQL变得很花哨,它决定使用不同的类加载器,以及Java应用服务器通常用来解决这些问题的其他一些技巧)。

按照丹·理查森的建议,从RazorSQL,实际的答案是通过修改配置,而是通过改变RazorSQL分布本身的内容不。我需要替换RazorSQL应用程序使用的jar文件。 jar文件位于RazorSQL的Mac应用程序文件夹中。该位置通常在/Applications/RazorSQL.app/Contents/Java/drivers/hsqldb

(注:如果你不熟悉如何打开Mac应用程序文件夹,你只是在RazorSQL文件夹名称在/Applications目录中单击鼠标右键,并使用“显示包内容”菜单选项)。在我的情况下,我将原始hsqldb.jar文件更名为hsqldb_2.3.2.jar文件,然后我在hsqldb.jar的最后分发版中复制。

相关问题