2016-05-08 49 views
0

我嘗試在spring-boot應用程序中使用liquibase將行插入到mysql中。一些與此類似: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所以我最終在db一個長字符串不添加新行到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> 

回答

2

嘗試usind CDATE在XML:

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

謝謝,工作完美無瑕! :) –

+1

只是添加到這個答案 - 這種行爲的原因是,在XML中,空白被認爲是不重要的,除了CDATA塊內。 – SteveDonie

+0

不僅空白問題。每個特殊字符都會使此錯誤<>!.... –

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>