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

标签 mysql phpmyadmin tomcat7 liquibase

我想在启动时使用 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 。

问题出在带引号的多行字符串内的分号,MySQL 将其解释为字符串的一部分。

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

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

关于mysql - Liquibase 给出 MySQL 语法错误,而 phpMyAdmin 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793150/

相关文章:

php - 使用 php 变量创建动态 mysql 查询

MySQL-从多个where子句中获取第一个非空结果

mysql - SQL 查询创建带有选择器的计算单元格总数的函数

java - 使用连接池更新数据源

php - 单击选项卡时如何将 sql 的结果显示到列表中?

php - mysql编码问题

mysql - 如何在phpmyadmin中导入大sql文件

java - Maven 试图部署到本地主机而不是远程服务器

tomcat - 带有外部配置文件的grails war tomcat

tomcat7 - 当我的 tomcat 关闭时将 tomcat 重定向到维护页面