今天写Testcase时,用Hibernate连Hsqldb,出现异常Connection is broken: Transfer corrupted, SQL Error: -3, SQLState: 08003
代码:
Configuration configuration = new Configuration()
.addClass(Book.class)
.setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect")
.setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver")
.setProperty("hibernate.connection.url", "jdbc:hsqldb:file:data/testdb")
//.setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:testdb")
//.setProperty("hibernate.connection.url", "jdbc:hsqldb:hsql://localhost/testdb")
//.setProperty("hibernate.connection.username", "sa")
//.setProperty("hibernate.connection.password", "");
SessionFactory factory = configuration.buildSessionFactory();
当hsqldb数据源为file或mem方式时,一切正常,如果换成以server方式,以jdbc:hsqldb:hsql://localhost/testdb,就报:
00:25:05,625 WARN SettingsFactory:107 - Could not obtain connection metadata
java.sql.SQLException: Connection is broken: Transfer corrupted
at org.hsqldb.jdbc.jdbcUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.getAutoCommit(Unknown Source)
at net.sf.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:103)
at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1172)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:803)
at CatTest.setUp(CatTest.java:14)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.textui.TestRunner.doRun(TestRunner.java:116)
at com.intellij.rt.execution.junit.IdeaTestRunner.doRun(IdeaTestRunner.java:65)
at junit.textui.TestRunner.doRun(TestRunner.java:109)
at com.intellij.rt.execution.junit.IdeaTestRunner.startRunnerWithArgs(IdeaTestRunner.java:24)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:118)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
00:25:07,562 WARN JDBCExceptionReporter:57 - SQL Error: -3, SQLState: 08003
00:25:07,562 ERROR JDBCExceptionReporter:58 - Connection is broken: Transfer corrupted
net.sf.hibernate.exception.GenericJDBCException: Cannot open connection
at net.sf.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:90)
at net.sf.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:79)
at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at net.sf.hibernate.impl.BatcherImpl.convert(BatcherImpl.java:328)
at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:295)
at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3373)
at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3333)
at net.sf.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:40)
at net.sf.hibernate.transaction.JDBCTransactionFactory.beginTransaction(JDBCTransactionFactory.java:19)
at net.sf.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:2252)
at CatTest.setUp(CatTest.java:15)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
Caused by: java.sql.SQLException: Connection is broken: Transfer corrupted
at org.hsqldb.jdbc.jdbcUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.getAutoCommit(Unknown Source)
at net.sf.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:103)
at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:292)
... 17 more
最好发现是server端和testcase客户端的hsqldb.jar的版本不一致所导致,两边的jar包统一后解决
分享到:
相关推荐
本书是使用Eclipse逐步介绍Hibernate,Spring,HSQL和Maven的指南,其中包含4个有关流行框架的教程。
项目是可运行的Myeclipse 6.5开发,所有的jar在项目的lib下,利用hibernate操作内存数据库 hsqlbd,次项目是比较经典的测试例子学习使用
HSQLDB中文文档,能够提高数据的处理速度。
hibernate.connection.url jdbc:hsqldb:./build/db/hsqldb/hibernate #hibernate.connection.url jdbc:hsqldb:hsql://localhost #hibernate.connection.url jdbc:hsqldb:test ## H2 (www.h2database.com) #...
博文链接:https://xuliangyong.iteye.com/blog/79089
数据库连接 hsqldb1.7.1.jar
HSQLDB的安装,使用,以及简单的例子讲解
hsqldb确实是个好东西,对于系统演示,开发等都很方便。
hsqldb 2 3 2 zip HyperSQL是用Java编写的一款SQL关系数据库引擎 它的核心完全是多线程的 支持双向锁和MVCC 多版本并发控制 几乎完整支持ANSI 92 SQL 支持常见数据类型 最新版本增加了对BLOB和CLOB数据的支持 最高...
Hsqldb 是一个优秀的轻量级开源的纯Java SQL 数据库。 大家可以从Hsqldb 官方网站(http://hsqldb.org)获取到Hsqldb 的发布包、源代码和文档。
简单的创建两个例子,如何创建hsqldb,如何使用hsqldb查询数据等。
hsqldb jdbc driver适合于hsqldb
HSQLDB 1.8.0
hsqldb的最新1.9.0版本,支持windows操作系统
hsqldb for jdk1.5因为hsqldb的2.0版本以上都是jdk1.6进行编译的,我提供的这个2.25版本的是jdk1.5编译的。
hsqldb jar
HSQLDB中文手册
hsqldb可能需要的额外jar包 Additional Jar files needed for hsqldb.