ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

java – LiquiBase – 将更改log sql输出到2.0.5中的文件的任何方法?

2019-06-13 10:06:01  阅读:307  来源: 互联网

标签:java spring liquibase


目前我正在使用liquibase.integration.spring.SpringLiquibase bean将Liquibase与我的spring应用程序集成

从java doc,知道有一个属性sqlOutputDir到该bean类,以便sql可以输出到外部文件是合理的.

但是,最新的2.0.5中似乎不存在该功能.

所以,问题是,将changeLog sql输出到外部文件的当前等效方法或函数是什么,或者该功能是否已被完全删除?

请提示,非常感谢.

解决方法:

用于编写SQL输出的等效Java命令是:Liquibase #update(String,Writer).您可以通过继承SpringLiquibase并覆盖afterPropertiesSet,在Spring应用程序中调用此方法.例如:

@Bean
public SpringLiquibase liquibase() {
    SpringLiquibase liquibase = new SpringLiquibaseWriter();
    // ...
    return liquibase;
}

private static class SpringLiquibaseWriter extends SpringLiquibase {

    @Override
    public void afterPropertiesSet() throws LiquibaseException {

        try (Connection connection = getDataSource().getConnection()) {

            Liquibase liquibase = createLiquibase(connection);
            Writer writer; // ... get writer
            liquibase.update(getContexts(), writer);
            // ...

        } catch (LiquibaseException | SQLException e) {
            // handle
        }

        super.afterPropertiesSet();
    }
}

对update(String,Writer)的调用将执行您的更改集而不实际更新数据库.对super.afterPropertiesSet的调用实际上将执行liquibase更新.

我注意到你在SpringLiquibase中引用的javadoc提到了writeSqlFileEnabled和sqlOutputDir属性.显然,这些已被删除,但javadoc未更新(见CORE-1104).我不确定这些选项被删除的原因或者预期的替代品是什么.我发现liquibase日志记录有点不足,所以这种方法对于记录(调试)liquibase SQL输出可能很有用.

标签:java,spring,liquibase
来源: https://codeday.me/bug/20190613/1232049.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有