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