我在jdk 11上有一个Spring申请
注意:该应用程序是Spring包装为战争包装。
使用maven,具有以下liquibase依赖性:
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.15.0</version>
</dependency>
changelog主文件名为db.changelog.xml,位于/we b-INF/classes/META-INF/liqui base/下,application.properties上的配置如下:
spring.liquibase.parameters.firstname=admin1
spring.liquibase.parameters.email=admin1@abc.com
Spring版本:5.3.22
db-changelog.xml看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">
<changeSet id="1" author="abc">
<!-- USERS -->
<createTable tableName="USER">
<column name="login" type="varchar(50)" />
<column name="first_name" type="varchar(50)" />
<column name="email" type="varchar(100)" />
</createTable>
<insert tableName="USER">
<column name="login" value="amit"/>
<column name="first_name" value="${firstname}"/>
<column name="email" value="${email}"/>
</insert></changeSet>
</databaseChangeLog>
当我使用liquibaseSQL启动tomcat服务器时,在DB列中插入字符串值,如下图所示:
有人能帮忙吗?我在这里错过了什么。
看到/WEB-INF/classes
下有META-INF
目录,这很奇怪
显然,这不是Spring Boot默认情况下查找Liquibase变更集的位置
您必须在应用程序中显式配置它。要实现这一点,财产
如下:
spring.liquibase.change-log=classpath:META-INF/liquibase/db.changelog.xml
您可以将 logging.level.liquibase=debug
添加到属性中,以记录 Liquibase 读取的确切位置以及它执行的查询以使数据库达到所需状态。