Liquibase:不为H2兑现架构名称,但MySQL是罚款(Liquibase: Does not

2019-10-20 04:47发布

  • 我使用maven cargo部署我的Spring应用。
  • 我想对这个运行MySQLH2嵌入式数据库。
    对于配置H2看起来像
 @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; } } 

MySQL它看起来像

@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;
    }
}

当我运行使用货集成测试,我看到两个差异,

  1. 当撞上了MySQL架构名称是照顾Liquibase运行时,我看到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 14年5月26日上午09点18分:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2:表网络创建的INFO 14年5月26日9:18 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2:变更liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2在8ms的信息5/26成功运行/ 14上午09时18分:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2:从test_common.DATABASECHANGELOG INFO阅读14年5月26日上午09点18分:liquibase:liquibase /changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:从test_common.DATABASECHANGELOG INFO阅读14年5月26日上午09点18:liquibase:liquibase / changelog.xml:liquibase /一分之二千〇一十四-2.xml :: 05192014.1525 :: H2:新行插入到网络信息14年5月26日上午9时18分:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2 :新行插入到网络信息14年5月26日上午09点18分:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入NETW 扫INFO 14年5月26日9:18 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入到网络信息14年5月26日9:18 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入到网络信息14年5月26日上午09时18分:liquibase:liquibase / changelog.xml: liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入到网络信息14年5月26日上午9点18分:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml: :05192014.1525 :: H2:变更liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2成功6ms的INFO 14年5月26日跑了上午9点18分:liquibase:liquibase / changelog.xml:liquibase /一分之二千〇一十四-2.xml :: 05192014.1525 :: H2:从test_common.DATABASECHANGELOG信息阅读14年5月26日上午09时18分:liquibase:成功发布更改日志锁

  1. 当对跑H2 ,它适用于公共架构,而不是 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 14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2:表网络建立信息14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2:变更liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2在5ms的信息5/26成功运行/ 14 9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-1.xml :: 05192014.1525 :: H2:从PUBLIC.DATABASECHANGELOG INFO阅读14年5月26日9:45 AM:liquibase:liquibase /changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:从PUBLIC.DATABASECHANGELOG INFO阅读14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase /一分之二千〇一十四-2.xml :: 05192014.1525 :: H2:新行插入到网络信息14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2 :新行插入到网络信息14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入到网络信息5/26 / 1 4 9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入到网络INFO 14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:新行插入到网络INFO 14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1- 2.XML :: 05192014.1525 :: H2:新行插入到网络信息14年5月26日9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:变更liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2在5ms的INFO 14年5月26日成功地跑了9:45 AM:liquibase:liquibase / changelog.xml:liquibase / 2014 / 1-2.xml :: 05192014.1525 :: H2:从PUBLIC.DATABASECHANGELOG信息阅读14年5月26日9:45 AM:liquibase:成功发布更改日志锁

这是怎么回事错在这里?

Answer 1:

Liquibase试图同时处理“模式”和“目录”,其中目录是可以或可以不包含模式最顶部的容器。 对于像MySQL数据库具有对象分组的只是一个水平,“产品目录”和“模式”是可以互换的。 对于H2,你可以同时拥有目录/数据库,并架构在数据库中。 您H2设置是用test_common数据库,但该数据库中的默认的公共架构。

如果你是想Liquibase配置为使用非默认的H2架构,使用“defaultSchema” SpringLiquibase配置属性。



文章来源: Liquibase: Does not honor schema name for H2, but MySQL is fine