First off, thanks for such a great tool! I have successfully used LiquiBase with Maven to generate a database schema for a new project.
I am now looking to re-use some of the XML schema definitions in our unit tests. For production, we have a MySQL InnoDB database. For the unit tests, we want to use simple in-memory HSQLDB tables.
When I run the unit test, LiquiBase says that it ran the script (which creates a table) without error, but when I try to insert a record into the table using my application code, I get “java.sql.SQLException: user lacks privilege or object not found: USER”.
I changed the HSQLDB URL to use a file-based table for debugging and saw that the user table does not exist. I would sure appreciate it if you have any insight into what I might be doing wrong.
Here is the relevant code, change log XML, and output:
JDBCDataSource dataSource = new JDBCDataSource();
dataSource.setDatabase(“jdbc:hsqldb:file:/tmp/hsqldb/testdb”);
dataSource.setUser(“SA”);
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(dataSource.getConnection()));
Liquibase liquibase = new Liquibase(“user-db.xml”, new ClassLoaderResourceAccessor(), database);
liquibase.update(null);
<databaseChangeLog xmlns=“http://www.liquibase.org/xml/ns/dbchangelog” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd”>
INFO 1/7/10 11:15 AM:liquibase: Successfully acquired change log lock
INFO 1/7/10 11:15 AM:liquibase: Creating database history table with name: DATABASECHANGELOG
INFO 1/7/10 11:15 AM:liquibase: Reading from DATABASECHANGELOG
INFO 1/7/10 11:15 AM:liquibase: ChangeSet user-db.xml::1::dan ran successfully in 15ms
INFO 1/7/10 11:15 AM:liquibase: Successfully released change log lock