postgresql Liquibase知道来自www.example.com的端口application.properties(它连接到我的数据库),但不知道其变更集中的${port},直到设置了< property>

hfwmuf9z  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(123)

在 *Sping Boot * 启动时,从这个application.properties执行 Liquibase changelog:

url=jdbc:postgresql://localhost:5434/comptesfrance
changeLogFile=../AdapterOutboundPostgis/target/classes/db/changelog/compte-france-postgis-changelog.xml
driver=org.postgresql.Driver
username=postgres
password=postgres
port=5434

连接完成,每个变更集都被服务,除了这类变更集:

<changeSet id="shp2pgsql_communes_2023" author="mlebihan" failOnError="false">
    <comment>Importation des shapefiles des contours des communes 2023</comment>

    <executeCommand executable="/bin/bash">
        <arg value="-c"/>
        <arg value="export PGPASSWORD=${password};shp2pgsql -s 4326 
           -I /data/comptes-france/territoire/2023/communes.shp public.communes_2023 | 
           psql -d comptesfrance -U postgres -h localhost -p ${port} -q"/>
    </executeCommand>
</changeSet>

这里,${password}${port}没有解析。

/bin/bash -c export PGPASSWORD=${password};shp2pgsql -s 4326 
   -I /data/comptes-france/territoire/2023/communes.shp public.communes_2023 | 
   psql -d comptesfrance -U postgres -h localhost -p ${port} -q

我尝试在属性文件中添加属性liquibase.port=5434,但没有成功。
作为一个变通方法,我坐在我的更新日志的顶部:

<property name="port" value="5434" />
<property name="password" value="postgres" />

然后就成功了我可以看到:

Shell command '/bin/bash -c export PGPASSWORD=postgres;shp2pgsql -s 4326 
    -I /data/comptes-france/territoire/2023/communes.shp public.communes_2023 | 
    psql -d comptesfrance -U postgres -h localhost -p 5434 -q' executed

但这不能持续太久。
为什么application.properties *Sping Boot * 参数可以被 Liquibase 解释-因为它可以连接到数据库(在非标准的 PostgreSQL 端口上:5434)-并且不能同时找到更新日志/变更集?

uplii1fm

uplii1fm1#

Sping Boot 在自己的perfix spring.liquibase下定义了Liquibase(LB)属性。如果你想把参数传递给LB,你应该有这样的东西:

spring.liquibase.parameters.port=5434
spring.liquibase.parameters.password=postgres

相关问题