加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

春天 – Liquibase dropFirst with postgis

发布时间:2020-12-15 01:34:20 所属栏目:大数据 来源:网络整理
导读:我正在尝试通过Liquibase将postgis扩展添加到我的postgressql数据库,这是我如何做到的: 它运行正常,问题是当我正在开发时我希望每次重新启动我的Web服务器时都重置我的数据库,所以我在春天设置liquibase就像这样 @Bean(name = "liquibase")@DependsOn("data

我正在尝试通过Liquibase将postgis扩展添加到我的postgressql数据库,这是我如何做到的:

它运行正常,问题是当我正在开发时我希望每次重新启动我的Web服务器时都重置我的数据库,所以我在春天设置liquibase就像这样

@Bean(name = "liquibase")
@DependsOn("dataSource")
@Profile("dev")
public SpringLiquibase liquibaseDev() {
    SpringLiquibase springLiquibase = new SpringLiquibase();
    springLiquibase.setDataSource(this.dataSource());
    springLiquibase.setChangeLog("classpath:liquibase.xml");
    springLiquibase.setDefaultSchema(this.environment.getProperty("jdbc.defaultSchema"));
    springLiquibase.setDropFirst(true);
    return springLiquibase;
}

所以Liquibase试图在启动时删除所有内容,包括postgis视图.这导致了这个错误

org.postgresql.util.PSQLException: ERROR: cannot drop view geography_columns because extension postgis requires it
Indice?: You can drop extension postgis instead.

但是我应该如何告诉liquibase在放弃其他所有内容之前删除扩展?有没有办法告诉Liquibase如何删除数据库?

我正在使用的版本:

> Spring IO 2.0.7
> Liquibase 3.4.2(Spring IO设置的版本)
> Postgres 9.5

最佳答案
解决了这个问题,添加了一些在Liquibase启动之前执行的SQL:

@Bean(name = "liquibase")
@DependsOn("dataSource")
@Profile("dev")
public SpringLiquibase liquibaseDev() {

    ScriptUtils.executeSqlScript(this.dataSource().getConnection(),new ClassPathResource("delete-postgis.sql"));

    SpringLiquibase springLiquibase = new SpringLiquibase();
    springLiquibase.setDataSource(this.dataSource());
    springLiquibase.setChangeLog("classpath:liquibase.xml");
    springLiquibase.setDefaultSchema(this.environment.getProperty("jdbc.defaultSchema"));
    springLiquibase.setDropFirst(true);
    return springLiquibase;
}

文件src / main / resources / delete-postgis.sql正在

DROP EXTENSION IF EXISTS postgis;

这不是花哨的,但它确实有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读