2016-05-08 8 views
0

Ich versuche, eine Zeile in Mysql mit Liquibase in einer Spring-Boot-App einfügen. Etwas ähnliches wie folgt aus: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> 

Aus irgendeinem seltsamen Grund liquibase fügt keine Zeilenumbrüche an den SQL richtig so dass ich in der db einer langen Schnur am Ende mit. Wie kann ich Liquibase zwingen, mit Zeilenumbrüchen einzufügen? Hier

ist das Schema für die Tabelle Ich versuche zum Einfügen in:

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

Antwort

2

usind CDATE in der XML-Versuchen:

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

Danke, funktionierte einwandfrei! :) –

+1

Um nur zu dieser Antwort hinzuzufügen - der Grund für dieses Verhalten ist, dass in XML, Whitespace als unwichtig betrachtet wird, außer innerhalb eines CDATA-Blocks. – SteveDonie

+0

nicht nur Whitespaces geben ein Problem. Jedes spezielle Zeichen macht diesen Fehler <>! .... –

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

Während dieser Code die Frage beantworten kann, wird ein zusätzlicher Kontext bezüglich der Frage, warum und/oder wie dieser Code die Frage beantwortet, sehr geschätzt. –

0

habe ich versucht, alle oben genannten Antworten, schließlich Ich sehe eine Antwort auf dem Gemeinschaftsforum von liquibase, das die Antwort hat:

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

Arbeitete für mich: <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>