【问题标题】:mysql error update or insert failingmysql错误更新或插入失败
【发布时间】:2012-11-29 20:32:59
【问题描述】:

这里我要瞎了...似乎在这个 SQL 中找不到错误:

INSERT INTO sankt_groups_order (
    parent_group_id, 
    child_group_id, 
    order
) VALUES (?,?,?)
ON DUPLICATE KEY UPDATE 
    order = ?
;

我收到此错误:

SQLSTATE[42000]: Syntax error or access violation: 
    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 'order ) VALUES ('65',NULL,'3') ON DUPLICATE KEY UPDATE order = '3'' 

接下来这个 SQL 会按照我的想法做吗?如果丢失,我需要它插入整行,如果存在则更新顺序...我有一个索引使 parent_group_idchild_group_id 唯一。

【问题讨论】:

    标签: mysql insert unique


    【解决方案1】:

    order 是 mysql 中的 reserved word,你必须转义它:

        child_group_id, 
        `order`
        ^--   ^--- backticks to escape
    ) VALUES (?,?,?)
    

    是的,它应该按照你的想法去做。如果存在唯一/主键违规,您只需更改 order 字段。

    【讨论】:

    • 是的。谢谢你,似乎成功了 :) 忘记了那些该死的保留字......不过,我希望有更好的错误消息 :)
    • 不幸的是,这就是他们被保留的原因。 mysql 只看到你写的东西,看到“订单”,认为“嗯,看起来编码器从字段列表跳转到没有来自/哪里的订单子句”
    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多