5
我想PostGIS的扩展添加到通过Liquibase我的PostgreSQL的数据库,这里是如何我已经做到了:Liquibase dropFirst在PostGIS
<sql>CREATE EXTENSION IF NOT EXISTS postgis;</sql>
它工作正常,问题是,当我开发我想我的数据库被重置每次我重新启动我的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如何删除数据库?
版本我使用的是:
- 春IO 2.0.7
- Liquibase
- 的Postgres 3.4.2(由Spring IO集版本)9.5
我相信liquibase不知道postgres中的扩展名,因此不会删除它们。 Liquibase将尝试查找所用模式中的所有对象,然后构建一个drop语句列表并执行它。当你为你的create扩展语句添加一个模式声明,比如'CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;' - 但这只是一种猜测,可能没有什么区别...... – Jens
由于'public'是默认架构,它已经添加到这个。是的,liquibase似乎不知道postgres扩展,所以我们似乎不得不求助于其他方法来管理 – lepak