2012-10-16 45 views
7

我試圖設置一個HSQL數據庫進行測試,使用版本2.2.9,Hibernate 3.6.9和Spring 3.1.2。我們一直在使用本地postgresql數據庫,但正在做一個測試開關。我有40-50個測試類,總共有200多個測試。如果從eclipse單獨運行,每個測試類都可以正常工作。當我使用Maven編譯和測試一切時,我有測試錯誤。在某個時候,它似乎試圖再次運行我的init.sql腳本並再次創建表。我得到這個作爲我的終極原因:HSQLDB對象名已存在

Caused by: org.hsqldb.HsqlException: object name already exists: DUAL_ASSET_ASSETID_SEQ 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.SchemaObjectSet.checkAdd(Unknown Source) 
at org.hsqldb.SchemaManager.checkSchemaObjectNotExists(Unknown Source) 
at org.hsqldb.StatementSchema.setOrCheckObjectName(Unknown Source) 
at org.hsqldb.StatementSchema.getResult(Unknown Source) 
at org.hsqldb.StatementSchema.execute(Unknown Source) 
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) 
at org.hsqldb.Session.executeDirectStatement(Unknown Source) 
at org.hsqldb.Session.execute(Unknown Source) ... 52 more 

我嘗試使用創建表時,「IF NOT EXISTS」但是當我去創建序列我得到了同樣的錯誤。所以它試圖做的不僅僅是這一張表,而且我不能在CREATE SEQUENCE語句中使用'IF NOT EXISTS',所以我被卡在了那裏。

有什麼理由爲什麼我的數據似乎再次加載?我也偶爾會收到此錯誤:

2012-10-16 10:55:48,489 [Thread-0] WARN 
org.springframework.jdbc.datasource.embedded.HsqlEmbeddedDatabaseConfigurer:shutdown:46 - Could not shutdown embedded database java.sql.SQLException: Database lock acquisition failure: attempt to connect while db opening /closing 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) 
at org.springframework.jdbc.datasource.SimpleDriverDataSource.getConnectionFromDriver(SimpleDriverDataSource.java:140) 
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) 
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) 
at org.springframework.jdbc.datasource.embedded.AbstractEmbeddedDatabaseConfigurer.shutdown(AbstractEmbeddedDatabaseConfigurer.java:40) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.shutdownDatabase(EmbeddedDatabaseFactory.java:152) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean.destroy(EmbeddedDatabaseFactoryBean.java:65) 
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:211) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:498) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:442) 
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1071) 
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1045) 
at org.springframework.context.support.AbstractApplicationContext$1.run(AbstractApplicationContext.java:963) Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: attempt to connect while db opening /closing at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source) 
at org.hsqldb.DatabaseManager.newSession(Unknown Source) ... 16 more 
+0

[本的問題是跨貼](http://sourceforge.net/projects/hsqldb/forums/forum/73674/topic/6025433)。 –

回答

0

HSQLDB的當前版本允許CREATE SEQUENCE IF NOT EXISTS語句。

或者對於測試,您可以在創建任何對象之前簡單地刪除PUBLIC模式的全部內容。

DROP SCHEMA PUBLIC CASCADE