我正在使用LiquiBase3.4.2(通过Maven插件)。我有一个db.changelog-master.xml文件,其中包含另外两个文件:db.changelog-2.6.xml和db.changelog-2.10。
db.changelog-master.xml看起来如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog logicalFilePath="/database-migration/db.changelog-master.xml"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
<include file="versions/db.changelog-2.6.xml" relativeToChangelogFile="true"/>
<include file="versions/db.changelog-2.10.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>
在db.changelog-2.10中,我创建了一个
来删除一些数据,在
标记中,我引用了创建相同数据的
。这两个
看起来如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog logicalFilePath="/database-migration/versions/db.changelog-2.10.xml"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
<changeSet id="1" author="my-user">
<insert tableName="TABLE">
<!-- SOME DATA -->
</insert>
</changeSet>
<changeSet id="2" author="my-user">
<delete tableName="TABLE" />
<rollback changeSetId="1" changeSetAuthor="my-user" />
</changeSet>
</databaseChangeLog>
问题是,当我尝试运行update
命令时,出现以下错误消息:
是我做错了什么还是这是Liquibase的错误?
请检查
中打开和关闭XML标记的匹配情况。在您的示例中,我看到了开头标记
和结尾标记。可能您的问题是由于输入数据不正确造成的。非常奇怪的是,liquibase中的XML-parser没有检测到这一点。
尝试将结束标记替换为更合适的
。
我想在changelog文件中使用以下变更集标记数据库,以便将来回滚。当我应用这个变更集时,我在databasechangelog中注意到,前面的变更集也用标记更新了。 changelog文件中的变更集 下面是从databasechangelog表中提取的内容,function51是上一次运行的变更集 有人遇到过吗?我使用的是Liquibase 3.1.1 多谢了。
LiquiBase:CVC-complex-type.2.4.A:发现以元素'sql'开始的无效内容。应使用“{”http://www.liquibase.org/xml/ns/dbchangelog“:modifysql}”之一。 获取此变更集的错误
我已经用Spring试用过LiquiBase3.0测试版了(顺便说一句,它不适合2.0)。很顺利。 现在,我正在用Ant和相同的数据库和changelog测试它,在回滚所有更改并删除表DATABASECHANGELOG和DatabaseChangeloglock之后。 问题是liquibase将所有更改集记录在表DATABASECHANGELOG中,这意味着我的配置中没有任何错误,但它没有将更改提
版本1.0.0 我有一个包含创建表的脚本r-1.0.0.sql和一个创建存储过程的脚本proc.sql。proc变更集被标记为runonchange=true。 我对这些变更很满意,并且我用标记1.0.0标记数据库 最后DATABASECHANGELOG表显示: 1-r-1.0.0.sql-executed 2-proc.sql-executed-(tag)1.1.0 版本2.0.0 我有一个重命
我使用Thymeleaf作为模板引擎,通常输出如下可变值: 在Java I集合中: 并在html模板中输出: 这很好,但我想输出一个变量,而不需要标记。以下内容将非常好: 不幸的是,它不起作用。我的目标是避免不必要的标签输出变量值。这可能与Thymeleaf有关吗?