当前位置: 首页 > 知识库问答 >
问题:

Liquibase modifysql标记与同一变更集中的sql标记不工作

华哲茂
2023-03-14

LiquiBase:CVC-complex-type.2.4.A:发现以元素'sql'开始的无效内容。应使用“{”http://www.liquibase.org/xml/ns/dbchangelog“:modifysql}”之一。

获取此变更集的错误

<changeSet id="18.7.0.1-1-userTable" author="so">
    <preConditions onFail="MARK_RAN">
        <not>
            <tableExists tableName="USER_CURRENT"/>
        </not>
    </preConditions>
    <createTable tableName="USER_CURRENT">
        <column name="name" type="VARCHAR(20)">
            <constraints primaryKey="true" nullable="false" primaryKeyName="name"/>
        </column>

    </createTable>
    <modifySql dbms="mysql">
        <append value=" PARTITION BY KEY() PARTITIONS 16"/>
    </modifySql>
    <modifySql dbms="oracle">
        <append value=" ORGANIZATION INDEX PARTITION BY HASH (name) PARTITIONS 16 PARALLEL 4"/>
    </modifySql>
    <sql>GRANT SELECT ON USER_CURRENT TO 'reportsUser'@'%';</sql>       
</changeSet>

共有1个答案

万涵亮
2023-03-14

原因是在变更集中不能有sqlaftermodifysql标记。您必须将sql放在modifysql之前,或者将它们分离到不同的changeset中。

它来自dbchangelog-3.1.xsd

 类似资料:
  • 版本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 我有一个重命

  • 因此,我在Django中有我的views.py,它将对象列表呈现给我的html模板。一切正常。现在,这些对象有一些与之关联的对象ID。我将“static/images/”目录中的图像命名为与对象ID相同的名称。 因此,图像1.jpg将对应于对象id=1的对象,2.jpg对象id=2,依此类推。 现在我想在html中加载img标记中的图像,但是img标记的src URL将取决于对象id。 以下是我的

  • 我想在changelog文件中使用以下变更集标记数据库,以便将来回滚。当我应用这个变更集时,我在databasechangelog中注意到,前面的变更集也用标记更新了。 changelog文件中的变更集 下面是从databasechangelog表中提取的内容,function51是上一次运行的变更集 有人遇到过吗?我使用的是Liquibase 3.1.1 多谢了。

  • 今天,我从第三方后端获得了更新的XML内容,不得不更改基于XmlSerializer的解析代码,以符合新字段的要求。不幸的是,我发现引入了一组类似的标签,但行为怪异: 到目前为止,我们有一个基于[XmlElement]映射的“old root”解析器类,但我还没有弄清楚如何通过XML注释管理类似名称-值对的集合(类似于[XmlArray]/[XmlArrayItem])。我可以通过[XmlText

  • 问题内容: 在阅读有关标记接口的信息时,我偶然发现了以下站点:项目37:使用标记接口定义类型 在这里,根据Joshua Bloch的说法,标记接口比标记注释有两个优点。 1. 标记接口定义了一种由标记的类的实例实现的类型。标记注释没有。这种类型的存在使您可以在编译时捕获错误,而如果使用标记注释,则这些错误在运行时才捕获。 2. 标记接口相对于标记注释的另一个优点是可以更精确地定位它们。如果使用ta

  • 在阅读有关标记接口的内容时,我偶然发现了以下网站:第37项:使用标记接口定义类型 根据Joshua Bloch的说法,标记接口比标记注释有两个优点。 > 标记接口定义由标记类的实例实现的类型;标记注释没有。这种类型的存在允许您在编译时捕获错误,如果您使用标记注释,则直到运行时才能捕获这些错误。 与标记注释相比,标记接口的另一个优点是可以更精确地定位它们。如果使用target,它可以应用于任何类或接