2012-10-16 4 views
7

Sto provando a configurare un database HSQL per il test, utilizzando la versione 2.2.9, Hibernate 3.6.9 e Spring 3.1.2. Stavamo usando un database postgresql locale, ma stiamo facendo un passaggio per il test. Ho 40-50 classi di test con oltre 200 test in totale. Ogni classe di test funziona bene se eseguita singolarmente da Eclipse. Quando uso Maven per compilare e testare tutto ho errori di test. A un certo punto sembra che stia cercando di eseguire nuovamente il mio script init.sql e di creare nuovamente le tabelle. Mi viene questo come la mia causa finale:Nome oggetto HSQLDB già esistente

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 

Ho provato ad utilizzare 'SE NON ESISTE' durante la creazione di quel tavolo, ma quando vado a creare la sequenza che sto ottenendo lo stesso errore. Quindi sta cercando di fare qualcosa in più rispetto a quella tabella, e non posso usare "SE NON ESISTE" in un'istruzione CREATE SEQUENCE, quindi sono bloccato lì.

C'è qualche motivo per cui i miei dati sembrano essere caricati di nuovo? Sto anche occasionalmente questo errore:

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

[La domanda è stata cross-postato] (http://sourceforge.net/projects/hsqldb/forums/forum/73674/topic/6025433). –

risposta

0

La versione attuale di HSQLDB permette CREATE SEQUENCE SE NON ESISTE dichiarazioni.

In alternativa per i test, è possibile semplicemente eliminare l'intero contenuto dello schema PUBLIC prima di creare qualsiasi oggetto.

DROP SCHEMA PUBLIC CASCADE