我想在启动时使用liquibase 3.2.2和MySQL 5.6.23在tomcat 7服务器上执行命令。
命令失败,第2行出现神秘的语法错误。
当我在phpMyAdmin GUI中执行相同的命令时,它没有问题。
这是命令:
UPDATE `mytable`
SET `parametervalue`='<div class="div_w5 col_fg_head font_bold font_size_nor padding_t4 h_right">
<input type="radio" id="zahlung_ja" name="zahlung" value="1">
</div>
<div class="div_w5 font_bold font_size_nor padding_t4">
ja
</div>
<div class="div_w5 col_fg_head font_bold font_size_nor padding_t4 h_right">
<input type="radio" id="zahlung_nein" name="zahlung" value="0">
</div>
<div class="div_w10 font_bold font_size_nor padding_t4">
nein
</div>'
WHERE ID=23;
注意:当我将多行字符串压缩为更少的行时,它也可以在liquibase中工作。但这并不能解决我的一般性问题,因为这里显示的字符串只是一些我不能透露的较长字符串的简化示例。
答案 0 :(得分:0)
解决方案是将参数splitStatements:false
添加到变更集标题。
问题是带引号的多行字符串中的分号,MySQL将其解释为字符串的一部分。
但liquibase忽略了SQL语法,因此它以分号分割命令,导致发送给MySQL的命令不完整。
注意:Jens在对该问题的评论中指出了这一点。