【问题标题】:Run Liquibase over Wix Embedded MySql在 Wix 嵌入式 MySql 上运行 Liquibase
【发布时间】:2019-10-05 03:10:15
【问题描述】:

目前我有一些使用 Spring Boot 和 H2 嵌入式数据库进行功能测试的新模块。

遗留模块与大量 Liquibase 脚本一起构建整个数据库。

我希望使用Wix Embedded Mysql 使测试数据库更像生产环境。阅读文档后,我没有找到任何关于如何使用 Liquibase 或 Flyway 等工具处理脚本的具体内容。

他启动后是否可以在这个嵌入式数据库上执行 Liquibase 目标?

【问题讨论】:

    标签: mysql spring-boot liquibase embedded-database


    【解决方案1】:

    经过几天的研究,是的,有一种方法可以在 Wix Embedded MySQL 上运行 Liquibase。

    这是一步一步的:

    配置 Wix 嵌入式数据库

    Wix 的配置非常简单,正如他们的GitHub 所述:

    MysqldConfig config = aMysqldConfig(v5_7_latest)
        .withCharset(UTF8)
        .withPort(3060)
        .withUser("myuser", "mypassword")
        .withTimeZone("America/Sao_Paulo")
        .build();
    
    EmbeddedMysql mysqld = anEmbeddedMysql(config)
        .addSchema("myschema")
        .start();
    

    Liquibase 配置

    我已经在我的项目中添加了Liquibase maven dependency,所以我们可以通过编程方式访问 Liquibase 代码,API 可以在这里找到。

    首先我们必须构建一个datasource 并传递给 Liquibase 找到我们数据库的正确实现,然后我们可以操作 Liquibase 对象来执行目标:

    DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
    
    dataSourceBuilder.username(mysqld.getConfig().getUsername());
    dataSourceBuilder.password(mysqld.getConfig().getPassword());
    dataSourceBuilder.driverClassName(com.mysql.jdbc.Driver.class.getName());
    dataSourceBuilder.url("jdbc:mysql://localhost:3060/myschema");
    
    DataSource dataSource = dataSourceBuilder.build();
    
    Database database = DatabaseFactory
                            .getInstance()
                            .findCorrectDatabaseImplementation(
                                new JdbcConnection(dataSource.getConnection()) // Fetch MySQL database implementation
                            );
    
    Liquibase liquibase = new Liquibase("liquibase/mychanges.xml", // Path to liquibase changes
                                        new ClassLoaderResourceAccessor(), 
                                        database);
    
    liquibase.update(new Contexts()); // This execute the liquibase:update on the embedded database
    

    【讨论】:

      猜你喜欢
      • 2015-04-10
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2013-09-01
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多