2012-10-16 16 views
7

Próbuję skonfigurować bazę danych HSQL do testowania, używając wersji 2.2.9, Hibernate 3.6.9 i Spring 3.1.2. Używaliśmy lokalnej bazy danych PostgreSQL, ale przechodzimy do testowania. Mam 40-50 klas testowych z łącznie ponad 200 testów. Każda klasa testowa działa poprawnie, jeśli uruchamiana jest pojedynczo od zaćmienia. Kiedy używam Mavena do kompilowania i testowania wszystkiego, mam błędy testowe. W pewnym momencie wydaje się, że próbuję ponownie uruchomić skrypt init.sql i ponownie utworzyć tabele. Dostaję to jako mój ostatecznej przyczyny:Nazwa obiektu HSQLDB już istnieje

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 

Próbowałem za pomocą „JEŚLI NIE istnieje” podczas tworzenia tej tabeli, ale kiedy idę do tworzenia sekwencji Dostaję ten sam błąd. Próbuje zrobić coś więcej niż tylko jeden stół i nie mogę użyć słowa "IF NOT EXISTS" w instrukcji CREATE SEQUENCE, więc utknąłem w tym miejscu.

Czy istnieje jakikolwiek powód, dla którego moje dane wydają się być ponownie załadowane? Od czasu do czasu pojawia się również ten błąd:

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

[to pytanie crosspostowane] (http://sourceforge.net/projects/hsqldb/forums/forum/73674/topic/6025433). –

Odpowiedz

0

Aktualna wersja HSQLDB umożliwia tworzenie instrukcji, jeśli nie istnieje.

Alternatywnie do testów można po prostu upuścić całą zawartość schematu PUBLICZNEGO przed utworzeniem jakichkolwiek obiektów.

DROP SCHEMA PUBLIC CASCADE 
Powiązane problemy