【问题标题】:MySQL Error 1064 when updating multiple columnsMySQL 更新多列时出现错误 1064
【发布时间】:2013-04-07 20:24:52
【问题描述】:

我有以下 SQL 查询:

UPDATE mytable SET status = '2', dec = '268435458001932988' WHERE id = 29952

表格是:

status = varchar(1)
dec = varchar(23)

在我阅读手册后,我可以通过用“,”分隔多个列来更新它们。

那么为什么我会在这里遇到语法错误 (1064)?

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dec = '268435458001932988' WHERE id = 29952' at line 1

【问题讨论】:

  • id 列吗?
  • 是的,当我删除 ", dec = '268435458001932988'" 时它工作正常

标签: mysql sql-update multiple-columns


【解决方案1】:

DEC 显然是 MySQL 中的保留字。使用反引号。

UPDATE Mytable SET status = '2', `dec` = 'etc.'...

保留字列表:https://dev.mysql.com/doc/refman/4.1/en/reserved-words.html

【讨论】:

  • argh...(headbang)...谢谢...现在工作...他们真的应该更新他们的错误消息:D
  • @MichaelGrenzer 我不能说我不同意...... MySQL 因模棱两可的错误消息而臭名昭著
  • 这让我头痛了 3 个小时……哈哈。我应该给他们寄一张阿司匹林的发票……几分钟后就会收到……再次感谢。
【解决方案2】:

dec 是保留字(decimal 的简写)。尝试用反引号引用 dec 标识符:

update mytable set status = '2', `dec` = '268435458001932988' where id = 29952;

【讨论】:

    【解决方案3】:

    试试这个

     UPDATE mytable SET status = '2', `dec` = '268435458001932988' WHERE id = 29952
    

    DEC是mysql的保留关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-09
      • 2019-05-06
      • 2013-11-13
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多