Liquibase mysql 存储换行符

Lak*_*ula 3 mysql liquibase spring-boot

我尝试在 spring-boot 应用程序中使用 liquibase 将一行插入到 mysql 中。与此类似的东西:

<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="laxika" id="20160508-2">
        <insert tableName="news">
            <column name="title" value="Hello world"/>
            <column name="release_date" value="2016-05-09 00:00:00"/>
            <column name="icon" value="update"/>
            <column name="message" value="
                a
                b
                c
                d
            "/>
        </insert>
    </changeSet>
</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)

由于一些奇怪的原因,liquibase 没有正确地将换行符添加到 sql 中,所以我最终在数据库中有一个长字符串。如何强制 liquibase 插入换行符?

这是我尝试插入的表的架构:

<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="laxika" id="20150922-4">
        <createTable tableName="news">
            <column name="id" type="smallint unsigned" autoIncrement="true">
                <constraints primaryKey="true" nullable="false" />
            </column>
            <column name="release_date" type="date">
                <constraints nullable="false" />
            </column>
            <column name="title" type="varchar(256)">
                <constraints nullable="false" />
            </column>
            <column name="message" type="varchar(2048)">
                <constraints nullable="false" />
            </column>
            <column name="icon" type="varchar(32)">
                <constraints nullable="false" />
            </column>
        </createTable>
        <modifySql>
            <append value="ENGINE=INNODB DEFAULT CHARSET=utf8"/>
        </modifySql>
    </changeSet>
</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)

Jas*_*rst 6

我尝试了以上所有答案,最终我在 liquibase 社区论坛上看到了一个答案,其中有答案:

<column name="message"><![CDATA[
a
b
c
d
]]></column>
Run Code Online (Sandbox Code Playgroud)


Ber*_*fen 5

尝试在 XML 中使用 CDATA :

    <column name="message" value="<![CDATA[
        a
        b
        c
        d
    ]]>"/>
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说不起作用我收到以下错误:liquibase:与元素类型“列”关联的属性“值”的值不得包含“&lt;”字符。 (3认同)