Liquibase 更新失败

Posted

技术标签:

【中文标题】Liquibase 更新失败【英文标题】:Liquibase Update Failed 【发布时间】:2012-08-31 03:58:06 【问题描述】:

我在liquibase 上使用以下快速入门

我的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"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">

    <changeSet id="1" author="bob">
        <createTable tableName="department">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="active" type="boolean" defaultValueBoolean="true"/>
        </createTable>
    </changeSet>

</databaseChangeLog>

当我使用“更新”命令通过命令行运行 Liquibase 时,Liquibase 会告诉我这一点

INFO 8/31/12 9:17 AM:liquibase: Successfully released change log lock
Liquibase Update Failed: Content is not allowed in prolog.
SEVERE 8/31/12 9:17 AM:liquibase: Content is not allowed in prolog.
liquibase.exception.ChangeLogParseException: Error parsing line 1 column 1 of dat
abase.xml: Content is not allowed in prolog.
        at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXP
arser.java:106)
        at liquibase.Liquibase.update(Liquibase.java:107)

我的更新命令是

liquibase --driver=com.mysql.jdbc.Driver  --classpath=mysql-connector-java-5.1.6.jar   --changeLogFile=database.xml --url="jdbc:mysql://localhost:3306/sample" --username=root --password=password  update

我该怎么做?

【问题讨论】:

【参考方案1】:

这可能是因为您的 XML 文件开头有几个隐藏字符(如 BOM、google XML BOM 以获取更多信息)。

This link 显示如何删除 BOM。

如果您使用的是 Windows,XVI32(免费的十六进制编辑器)会为您工作。

【讨论】:

【参考方案2】:

参考Liquibase JIRA issue

此问题与架构定义有关...尝试使用给定链接的附件示例中的架构定义

【讨论】:

以上是关于Liquibase 更新失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Liquibase 创建雪花存储过程

Liquibase 脚本失败

Liquibase 校验和验证失败

liquibase 迁移失败,而 dropColumn 布尔变量

Liquibase CSV loadData 失败,带引号的字符串包含逗号

Liquibase 更新错误