mysql - Liquibase mysql 存储换行符

标签 mysql spring-boot liquibase

我尝试在 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>

由于某些奇怪的原因,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>

最佳答案

上面的答案我都试过了,最后在liquibase的社区论坛上看到了一个答案:

<column name="message"><![CDATA[
a
b
c
d
]]></column>

关于mysql - Liquibase mysql 存储换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104999/

相关文章:

php - 如果尚未附加 Laravel 关系附加

amazon-web-services - 如何将 Spring Boot 微服务应用程序(RESTful)作为无服务器部署到 AWS Lambda?

java - Keycloak:调用管理员 rest api 时无法将用户领域角色读取为管理员 cli

java - 运行 Maven 构建时如何访问 JAR 中的文件

MYSQL DISTINCT 关键字不起作用

mysql - 谁能告诉我在 mysql 中如何显示姓名不以字母 A 开头的员工姓名?

php - Codeigniter - 在将其发送到 View 之前处理从数据库检索的值

java - 尝试将 UUID 属性(外键)转换为实体对象时出现异常

data-migration - 是否建议使用 Liquibase 将生产数据从旧数据库模式迁移到新数据库模式?

postgresql - Liquibase 通过 Docker - 变更日志未写入磁盘