【问题标题】:Why do I get syntax error when I update from MYSQL?为什么从 MYSQL 更新时出现语法错误?
【发布时间】:2019-11-22 01:58:13
【问题描述】:

为了接收参数并更新数据,我将假数据放入并运行更新。

        UPDATE
        TB_PUSH_MESSAGE
        SET 1=1
        <if test="status != ''">
        , status = #{status}
        </if>
        <if test="body != null">
        , body = #{body}
        </if>
        WHERE
        seq_no = #{seq_no}

但是报错了

Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL 语法;检查与您的 MySQL 服务器相对应的手册 在 '1=1 附近使用正确语法的版本 , 状态 = '0'

          WHERE       seq_no = '1'' at line 3

如果我不能在里面放假数据,我该如何解决这个问题?

【问题讨论】:

  • 在我看来错误是在 '1'',还有一个额外的 '
  • SET 1=1,在这里您正在尝试更新 1。这里的 1 是什么(左侧)?它是可变的?
  • @vc73 '1=1' 数据是用于放入逗号的假数据。
  • @Ravindra The '1=1' data is fake data for put in commas.

标签: java mysql spring spring-boot


【解决方案1】:

问题似乎出在您的1 = 1 声明上。在这种情况下,第一个1 被视为“表TB_PUSH_MESSAGE 中的第一列”。所以你可以将这一行读作set seq_no = 1,这很可能与列的类型不兼容。

update equivalent of WHERE '1' = '1' — 这个问题似乎很有帮助/相关/重复。

【讨论】:

  • 那么,如何在不添加虚假数据的情况下完成这句话呢?
  • 如果你想要第一个“不带逗号”的声明,也许是set seq_no = seq_no? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
相关资源
最近更新 更多