Liquibase: does not assign a schema name to H2, but MySQL is ok

  • I use maven cargoto deploy my application Spring.
  • I am trying to run this for an embedded database MySQLand H2.
    Configuration for H2looks like
@Configuration
@Profile("development")
public class H2DatabaseConfig extends JpaCommonConfig {
    @Override
    public DataSource dataSource() {
        // (todo: harit) get rid of hard coding
        System.out.println("This is H2 Database Profile");
        final BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:mem:test_common");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
        return dataSource;
    }

    @Override
    protected Class<? extends Dialect> getDatabaseDialect() {
        return H2Dialect.class;
    }

    @Override
    protected Properties getJpaProperties() {
        final Properties properties = new Properties();
        properties.setProperty(HBM2DDL_AUTO, Hbm2ddlType.CREATE_DROP.toValue());
        properties.setProperty(SHOW_SQL, TRUE.toString());
        properties.setProperty(FORMAT_SQL, TRUE.toString());
        properties.setProperty(USE_SQL_COMMENTS, TRUE.toString());
        properties.setProperty(CONNECTION_CHAR_SET, getHibernateCharSet());
        properties.setProperty(NAMING_STRATEGY, ImprovedNamingStrategy.class.getName());

        return properties;
    }
}

but for MySQLhe looks like

@Configuration
@Profile("default")
public class MySqlDatabaseConfig extends JpaCommonConfig {
    @Override
    public DataSource dataSource() {
        // (todo: harit) remove hardcoding to read from environment variables
        System.out.println("This is MySQL Database Profile");
        final BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test_common?createDatabaseIfNotExist=true");
        dataSource.setUsername("root");
        return dataSource;
    }

    @Override
    protected Class<? extends Dialect> getDatabaseDialect() {
        return MySQL5InnoDBDialect.class;
    }

    @Override
    protected Properties getJpaProperties() {
        final Properties properties = new Properties();
        properties.setProperty(HBM2DDL_AUTO, Hbm2ddlType.UPDATE.toValue());
        properties.setProperty(SHOW_SQL, TRUE.toString());
        properties.setProperty(FORMAT_SQL, TRUE.toString());
        properties.setProperty(USE_SQL_COMMENTS, TRUE.toString());
        properties.setProperty(CONNECTION_CHAR_SET, getHibernateCharSet());
        properties.setProperty(NAMING_STRATEGY, ImprovedNamingStrategy.class.getName());
        return properties;
    }
}

When I run integration tests using load, I see two differences,

  • When starting with MySQLthe schema name is taken when Liquibase is running, I see test_common
INFO 5/26/14 9:18 AM:liquibase: Successfully acquired change log lock
INFO 5/26/14 9:18 AM:liquibase: Dropping Database Objects in schema: test_common.test_common
INFO 5/26/14 9:18 AM:liquibase: Creating database history table with name: test_common.DATABASECHANGELOG
INFO 5/26/14 9:18 AM:liquibase: Successfully released change log lock
INFO 5/26/14 9:18 AM:liquibase: Successfully acquired change log lock
INFO 5/26/14 9:18 AM:liquibase: Reading from test_common.DATABASECHANGELOG
INFO 5/26/14 9:18 AM:liquibase: Reading from test_common.DATABASECHANGELOG
INFO 5/26/14 9:18 AM:liquibase: Reading from test_common.DATABASECHANGELOG
INFO 5/26/14 9:18 AM:liquibase: liquibase/changelog.xml: liquibase/2014/1-1.xml::05192014.1525::h2: Reading from

test_common.DATABASECHANGELOG     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-1.xml:: 05192014.1525:: h2:     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-1.xml:: 05192014.1525:: h2: ChangeSet Liquibase/2014/1-1.xml:: 05192014.1525:: h2 8     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-1.xml:: 05192014.1525:: h2: test_common.DATABASECHANGELOG     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: test_common.DATABASECHANGELOG     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-2.xml:: 05192014.1525:: h2: ChangeSet Liquibase/2014/1-2.xml:: 05192014.1525:: h2 6     INFO 5/26/14 9:18 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: test_common.DATABASECHANGELOG     INFO 5/26/14 9:18 AM: Liquibase:

  • H2 PUBLIC test_common
INFO 5/26/14 9:45 AM:liquibase: Successfully acquired change log lock
INFO 5/26/14 9:45 AM:liquibase: Dropping Database Objects in schema: TEST_COMMON.PUBLIC
INFO 5/26/14 9:45 AM:liquibase: Creating database history table with name: PUBLIC.DATABASECHANGELOG
INFO 5/26/14 9:45 AM:liquibase: Creating database history table with name: PUBLIC.DATABASECHANGELOG
INFO 5/26/14 9:45 AM:liquibase: Successfully released change log lock
INFO 5/26/14 9:45 AM:liquibase: Successfully acquired change log lock
INFO 5/26/14 9:45 AM:liquibase: Reading from PUBLIC.DATABASECHANGELOG
INFO 5/26/14 9:45 AM:liquibase: Reading from PUBLIC.DATABASECHANGELOG
INFO 5/26/14 9:45 AM:liquibase: Reading from PUBLIC.DATABASECHANGELOG
INFO 5/26/14 9:45 AM:liquibase: liquibase/changelog.xml: liquibase/2014/1-1.xml::05192014.1525::h2: Reading from

PUBLIC.DATABASECHANGELOG     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-1.xml:: 05192014.1525:: h2:     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-1.xml:: 05192014.1525:: h2: ChangeSet Liquibase/2014/1-1.xml:: 05192014.1525:: h2 5     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-1.xml:: 05192014.1525:: h2: PUBLIC.DATABASECHANGELOG     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: PUBLIC.DATABASECHANGELOG     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: ,     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: Liquibase/2014/1-2.xml:: 05192014.1525:: h2: ChangeSet Liquibase/2014/1-2.xml:: 05192014.1525:: h2 5     INFO 5/26/14 9:45 AM: Liquibase: Liquibase/changelog.xml: liquidibase/2014/1-2.xml:: 05192014.1525:: h2: PUBLIC.DATABASECHANGELOG     INFO 5/26/14 9:45 AM: Liquibase:

?

+1
1

Liquibase "", "", , . , MySQL, , "" "" . H2 / , . h2 test_common, PUBLIC .

Liquibase , , SpringLiquibase "defaultSchema".

0

Source: https://habr.com/ru/post/1542094/


All Articles