I am trying to setup hsqldb with unitils and dbmaintain. I have a number of sql scripts that I would like unitils to execute before it runs the tests.
Can anyone please help?
Here is the error message I get
org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method public void com.bignibou.dao.UnitilsTest.testThree()
at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:156)
at org.unitils.dbunit.DbUnitModule$DbUnitListener.beforeTestSetUp(DbUnitModule.java:557)
at org.unitils.core.Unitils$UnitilsTestListener.beforeTestSetUp(Unitils.java:273)
at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java:151)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java:95)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61)
at org.unitils.UnitilsJUnit4TestClassRunner.access$000(UnitilsJUnit4TestClassRunner.java:44)
at org.unitils.UnitilsJUnit4TestClassRunner$1.run(UnitilsJUnit4TestClassRunner.java:62)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:68)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.unitils.core.UnitilsException: Error while performing database update: create table "BIGNIBOU"."DBMAINTAIN_SCRIPTS" ( FILE_NAME VARCHAR(150), VERSION VARCHAR(25), FILE_LAST_MODIFIED_AT BIGINT, CHECKSUM VARCHAR(50), EXECUTED_AT VARCHAR(20), SUCCEEDED BIGINT )
at org.unitils.core.dbsupport.DefaultSQLHandler.executeUpdateAndCommit(DefaultSQLHandler.java:149)
at org.unitils.dbmaintainer.version.impl.DefaultExecutedScriptInfoSource.createExecutedScriptsTable(DefaultExecutedScriptInfoSource.java:421)
at org.unitils.dbmaintainer.version.impl.DefaultExecutedScriptInfoSource.checkExecutedScriptsTable(DefaultExecutedScriptInfoSource.java:373)
at org.unitils.dbmaintainer.version.impl.DefaultExecutedScriptInfoSource.getExecutedScripts(DefaultExecutedScriptInfoSource.java:185)
at org.unitils.dbmaintainer.DBMaintainer.updateDatabase(DBMaintainer.java:231)
at org.unitils.database.DatabaseModule.updateDatabase(DatabaseModule.java:294)
at org.unitils.database.DatabaseModule.createDataSource(DatabaseModule.java:353)
at org.unitils.database.DatabaseModule.getDataSourceAndActivateTransactionIfNeeded(DatabaseModule.java:217)
at org.unitils.dbunit.DbUnitModule.getDefaultDbSupport(DbUnitModule.java:528)
at org.unitils.dbunit.DbUnitModule.getDataSetFactory(DbUnitModule.java:501)
at org.unitils.dbunit.DbUnitModule.getDataSetFactory(DbUnitModule.java:489)
at org.unitils.dbunit.DbUnitModule.getDataSet(DbUnitModule.java:312)
at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:147)
... 18 more
Caused by: java.sql.SQLException: invalid schema name: BIGNIBOU in statement [create table "BIGNIBOU"."DBMAINTAIN_SCRIPTS" ( FILE_NAME VARCHAR(150), VERSION VARCHAR(25), FILE_LAST_MODIFIED_AT BIGINT, CHECKSUM VARCHAR(50), EXECUTED_AT VARCHAR(20), SUCCEEDED BIGINT )]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
at org.apache.commons.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at org.apache.commons.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at org.unitils.core.dbsupport.DefaultSQLHandler.executeUpdateAndCommit(DefaultSQLHandler.java:142)
... 30 more
Caused by: org.hsqldb.HsqlException: invalid schema name: BIGNIBOU
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.SchemaManager.getSchemaHsqlName(Unknown Source)
at org.hsqldb.Session.getSchemaHsqlName(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)
... 35 more
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2012-02-29
I worked out from a previous post how to sort this problem: you have to set the schemas to PUBLIC as shown below.
# Properties for the PropertiesDataSourceFactory
database.driverClassName=org.hsqldb.jdbcDriver
database.url=jdbc:hsqldb:mem:bignibou
# This property specifies the underlying DBMS implementation. Supported values are 'oracle', 'db2', 'mysql' and 'hsqldb'.
database.dialect=hsqldb
database.userName=sa
database.password=
database.schemaNames=PUBLIC
#DbUnitModule.DataSet.loadStrategy.default=org.unitils.dbunit.datasetloadstrategy.InsertLoadStrategy
unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule
unitils.module.dbunit.enabled=true
updateDataBaseSchema.enabled=true
dataSetStructureGenerator.xsd.dirName=src/test/resources/xsd-unitils
dbMaintainer.script.locations=src/test/resources/dbscripts-unitils
dbMaintainer.autoCreateExecutedScriptsTable=true
dbMaintainer.disableConstraints.enabled=false
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I am trying to setup hsqldb with unitils and dbmaintain. I have a number of sql scripts that I would like unitils to execute before it runs the tests.
Can anyone please help?
Here is the error message I get
I worked out from a previous post how to sort this problem: you have to set the schemas to PUBLIC as shown below.