Próbuję dodać rozszerzenie PostGIS do mojej bazy danych PostgreSQL przez Liquibase, oto jak robiłem go:Liquibase dropFirst z PostGIS
<sql>CREATE EXTENSION IF NOT EXISTS postgis;</sql>
To działa dobrze, problem jest, gdy Zajmuję chcę moja baza danych będzie zresetowane za każdym razem ponownie uruchomić serwer WWW, tak mam ustawione liquibase wiosną jak to
@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;
}
I tak Liquibase próbuje rzucić wszystko, łącznie z widokiem PostGIS, przy starcie. Które doprowadziły do tego błądzenia
Ale jak mam powiedzieć liquibase, aby upuścić rozszerzenia przed upuszczeniem wszystkiego innego? Czy istnieje sposób, aby powiedzieć Liquibase, jak usunąć bazę danych?
Wersje Używam:
- Wiosna IO 2.0.7
- Liquibase 3.4.2 (w wersji ustalonej przez wiosennym IO)
- PostgreSQL 9,5
Wierzę, że firma liquibase nie wie o rozszerzeniach w postgresie i dlatego ich nie upuszcza. Liquibase spróbuje znaleźć wszystkie obiekty w schemacie, którego używasz, a następnie zbuduje listę instrukcji upuszczania i wykona go. Może to pomaga, gdy dodajesz deklarację schematu do instrukcji tworzenia rozszerzenia jak 'CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;' - ale to jest tylko domysły na wolności i może nie mieć znaczenia ... – Jens
Jako "public" jest domyślnym schematem, jest już dodany do tego. Tak, liquibase wydaje się nie wiedzieć o rozszerzeniu postgreatora, więc wydaje się, że musimy uciekać się do jakiejś innej alternatywy do zarządzania tym – lepak