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

无法使用Liquibase标记数据库以备将来回滚

廖琪
2023-03-14

我正在尝试使用标记数据库以备将来回滚,但得到以下错误:

将更新应用于数据库。这可能需要几分钟...运行LiquiBase时出现意外错误:解析ppsdb/ebidb_lb_upgrade_c43_sql_1.xml:cvc-complex-type.2.4.a:发现以元素“sql”开头的内容无效。应为“{”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:ModifySQL}”之一。

以下是我的变更集文件:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
<changeSet author="avnish_plsql_upgrade" id="1">
<tagDatabase tag="version_1.3"/>
<sql
        stripComments="false"
>
create table test (id number);
</sql>
</changeSet>
</databaseChangeLog>

共有1个答案

扶绍辉
2023-03-14

我也面临着同样的问题。在没有任何喘息的时间搜索了一段时间之后,我决定看一看XSD,看看元素是如何声明的。

根据Liquibase文档链接,XSD的最新版本是3.1。

如果查看3.1 XSD,可以看到tagdatabasechangeset允许的其余元素是互斥的(它们是XSD:choice的一部分)

<xsd:choice>
              <xsd:element ref="tagDatabase" maxOccurs="1"/>
              <xsd:group ref="changeSetChildren" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
 类似资料:
  • 我试过使用和不使用。表和已成功创建,并包含迁移(insert-books)。 迁移是通过的,因为如果我添加了一个无效的insert(到一些不存在的表中),我会得到异常: 如何使用LiquiBase用insert-books.sql脚本中的数据填充数据库?

  • 我们有一个现有的数据库在生产。我们已经决定使用liquibase进行所有进一步的更新,并创建任何新的数据库(如开发或集成)。 如果我们在生产上执行liquibase,它将尝试进行所有的完全更改,即使是那些已经存在的更改,这不会发生,因为除了两个新的更新之外,生产中已经有了所有的更改。现在我们想使用liquibase将这两个更改单独更新到产品中。 我们怎么能做到这一点?

  • 在我的项目中,我希望用户从Firebase实时数据中读取数据,同时他会将数据标记为锁定,直到他完成一些操作,在此期间其他用户无法读取此数据。 如果无法锁定,另一种情况是一旦他读取他同时写入一些数据以指示该数据已锁定。如果另一个用户读取此数据,他知道它已锁定。 我不确定这在火力基地是否可能。 有没有任何想法如何使用firebase实时数据库这个。

  • case-0-3.sql: 我在进行任何更改之前标记数据库: 之后,我在每个文件应用后应用文件和标记数据库: 求求你,救命。可能有人在sql或其他格式中使用回滚操作?哪里错了?我做错了什么?它是工作液基功能吗?

  • 事情是这样的 我不知道发生了什么,如果有人能帮忙,我会非常感激的。THX!

  • 我一直在尝试学习Liquibase,现在尝试执行一个简单的回滚。但是当它执行时,它总是回滚到一个新的数据库,即使我只是试图回滚到一个特定的标记。我的命令行在下面... java-jar liquiBase.jar--changelogfile=/media/galactus/documents/changelogs/ch_q_10.xml回滚“1.0.0-release” 我正在使用的更改日志也粘