2016-05-08 11 views
0

spring-boot appでliquibaseを使ってmysqlに行を挿入しようとしました。これに似た何か:私はデシベルで1つの長い文字列を持つ終わるので、LiquiBaseをが正しくSQLに改行を追加していないいくつかの奇妙な理由でLiquibase mysql store newline

<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に改行を挿入するにはどうすればいいですか?ここで

は私が挿入しようとしているテーブルのスキーマです:

<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> 

答えて

2

はXMLでusind CDATEをお試しください:

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

ありがとう、完璧に働いた! :) –

+1

ちょうどこの答えに追加する - この動作の理由は、空白はCDATAブロックの内部を除いて、重要ではないとみなされます。 – SteveDonie

+0

空白だけでなく、問題を引き起こすだけでなく、すべての特別なcharはこのエラーを発生させます。<>!.... –

0
<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" valueComputed="(SELECT '\na\nb\nc\nd\n' from dual)"/> 
     </insert> 
    </changeSet> 
</databaseChangeLog> 
+2

このコードは質問に答えるかもしれませんが、このコードが質問に答える理由および/または方法に関する追加の文脈を提供することは非常に認められています。 –

0

私は最終的に、すべての答えの上にしようとしました回答があるliquibaseのコミュニティフォーラムに関する回答があります:

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

私のために働いた: <insert tableName="AUDIT_ATTR"> <column name="AUDIT_ID" valueNumeric="601"/> <column name="KEY" value="FINDINGS_IN_CATEGORY_NCW_TEXT"/> <column name="VALUE"> tra1 la2 la3 </column> </insert>