title: H2 Database: How to have lowercase for tablename?
body: <ul>
  <li><p>I want to keep all my tablenames as lowercase. example <code>person</code></p>
  </li>
  <li><p>I use <a href="http://www.liquibase.org" rel="nofollow noreferrer"><em>Liquibase</em></a> to setup my database and it looks like</p>
  <pre class="lang-xml prettyprint-override"><code>&lt;databaseChangeLog
          xmlns=&quot;http://www.liquibase.org/xml/ns/dbchangelog&quot;
          xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
          xsi:schemaLocation=&quot;http://www.liquibase.org/xml/ns/dbchangelog
           http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd&quot;&gt;
      &lt;changeSet author=&quot;harit&quot; id=&quot;09222014.0639&quot;&gt;
          &lt;comment&gt;Add Person Table&lt;/comment&gt;
          &lt;createTable tableName=&quot;person&quot;&gt;
              &lt;column name=&quot;id&quot; type=&quot;INT&quot;/&gt;
              &lt;column name=&quot;firstName&quot; type=&quot;varchar(255)&quot;/&gt;
              &lt;column name=&quot;lastName&quot; type=&quot;varchar(255)&quot;/&gt;
          &lt;/createTable&gt;
      &lt;/changeSet&gt;
  &lt;/databaseChangeLog&gt;  
  </code></pre>
  </li>
  </ul>
  <p>I use <code>H2</code> database to run my integration tests and set up in <code>pom.xml</code> as</p>
  <pre><code>   &lt;cargo.datasource.datasource.earth&gt;
          cargo.datasource.driver=${h2.driver}|
          cargo.datasource.url=${datasource.url}|
          cargo.datasource.jndi=${datasource.jndi}|
          cargo.datasource.username=${h2.user}|
          cargo.datasource.password=${h2.user}
      &lt;/cargo.datasource.datasource.earth&gt;
  </code></pre>
  <p>where <code>datasource.url</code> looks like</p>
  <pre><code>&lt;datasource.url&gt;jdbc:h2:${project.build.directory}/earth;DATABASE_TO_UPPER=false&lt;/datasource.url&gt;
  </code></pre>
  <p>When I run <code>mvn</code>, I see</p>
  <pre><code>INFO 9/22/14 3:32 PM:liquibase: Successfully acquired change log lock
  INFO 9/22/14 3:32 PM:liquibase: Dropping Database Objects in schema: UNIT-TESTING-PU.PUBLIC
  INFO 9/22/14 3:32 PM:liquibase: Creating database history table with name: PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: Creating database history table with name: PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: Successfully released change log lock
  INFO 9/22/14 3:32 PM:liquibase: Successfully acquired change log lock
  INFO 9/22/14 3:32 PM:liquibase: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/01.xml::09222014.0639::harit: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/01.xml::09222014.0639::harit: Table person created
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/01.xml::09222014.0639::harit: ChangeSet liquibase/2014/01.xml::09222014.0639::harit ran successfully in 1ms
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/01.xml::09222014.0639::harit: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: New row inserted into person
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: New row inserted into person
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: New row inserted into person
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: New row inserted into person
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: New row inserted into person
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: ChangeSet liquibase/2014/02.xml::09222014.0844::harit ran successfully in 3ms
  INFO 9/22/14 3:32 PM:liquibase: liquibase/changelog.xml: liquibase/2014/02.xml::09222014.0844::harit: Reading from PUBLIC.DATABASECHANGELOG
  INFO 9/22/14 3:32 PM:liquibase: Successfully released change log lock
  Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.929 sec
  Running com.learner.integration.HelloIT
  Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.443 sec
  Running com.learner.integration.PersonsIT
  [INFO] [talledLocalContainer] 15:32:59,145 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-15) SQL Error: 42102, SQLState: 42S02
  [INFO] [talledLocalContainer] 15:32:59,146 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-15) Table &quot;Person&quot; not found; SQL statement:
  [INFO] [talledLocalContainer] select person0_.id as id1_0_, person0_.firstName as firstNam2_0_, person0_.lastName as lastName3_0_ from Person person0_ [42102-181]
  [INFO] [talledLocalContainer] 15:32:59,153 ERROR [org.jboss.as.ejb3.invocation] (default task-15) JBAS014134: EJB Invocation failed on component PersonManager for method public java.util.List com.learner.business.manager.PersonManager.getPersons(): javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement
  [INFO] [talledLocalContainer]   at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:190) [wildfly-ejb3-8.0.0.Final.jar:8.0.0.Final]
  [INFO] [talledLocalContainer]   at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275) [wildfly-ejb3-8.0.0.Final.jar:8.0.0.Final]
  [INFO] [talledLocalContainer]   at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:340) [wildfly-ejb3-8.0.0.Final.jar:8.0.0.Final]
  [INFO] [talledLocalContainer]   at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239) [wildfly-ejb3-8.0.0.Final.jar:8.0.0.Final]
  [INFO] [talledLocalContainer]   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
  [INFO] [talledLocalContainer]   at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [wildfly-ejb3-8.0.0.Final.jar:8.0.0.Final]
  [INFO] [talledLocalContainer]   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
  </code></pre>
  <p>As you can see, liquibase created <code>person</code> table and I used <code>DATABASE_TO_UPPER=false</code> for <code>H2</code> which made it from <code>PERSON</code> to <code>Person</code></p>
  <p><strong>Question</strong><br />
  How can I tell <code>H2</code> that my tables are all lowercase -&gt; <code>person</code> and <strong>not</strong> <code>Person</code>?</p>