2012-11-29 55 views
0

我会失明这里......似乎无法找出错误在这个SQL:MySQL错误更新或插入失败

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唯一。

回答

3

order是MySQL中的reserved word,你将不得不逃避它:

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

,是的,它应该做你的想法。如果存在唯一/主键违例,则只会更改order字段。

+0

是的。谢谢你,似乎在做伎俩:)忘记了那些该死的保留字......我本来希望有一个更好的错误信息,尽管:) –

+0

不幸的是,这就是为什么他们保留。 mysql只会看到你写的内容,并看到“order”,认为“嗯,看起来像编码器从字段列表跳转到没有from/where的order子句” –

+0

啊当然。让Marc感到自豪。谢谢! –