Liquibase 给出 MySQL 语法错误,而 phpMyAdmin 没有

Liquibase gives MySQL Syntax Error where phpMyAdmin doesn't

我想在启动时使用 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">
    &nbsp;ja &nbsp;&nbsp;
</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">
    &nbsp;nein &nbsp;&nbsp;
</div>'
WHERE ID=23;

注意:当我将多行字符串压缩为更少的行时,它也适用于 liquibase。但这并不能解决我的一般问题,因为这里显示的字符串只是几个我不能透露的较长字符串的精简示例。

解决方案是将参数splitStatements:false添加到变更集header。

问题是引号 multi-line 字符串中的分号,MySQL 将其解释为字符串的一部分。

但是 liquibase 忽略了 SQL 语法,所以它在分号处拆分命令,这导致不完整的命令被发送到 MySQL。

注意:Jens 在对问题的评论中指出了这一点。