2012-11-29 5 views
0

내가 여기 장님거야 실패 삽입 ...이 SQL에서 오류를 찾을 수 없습니다 :MySQL의 오류 업데이트 또는

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'' 

:이 오류를 얻고있다

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

을 다음으로이 SQL은 내가 생각하는대로 할 것인가? 누락 된 경우 전체 행을 삽입해야하며 존재하는 경우 순서를 업데이트해야합니다 ... parent_group_idchild_group_id만의 인덱스가 있습니다.

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

을 그리고 예, 당신이 무슨 생각을 수행해야합니다

답변

3

order 당신은 그것을 탈출해야합니다, MySQL의에서 reserved word입니다. 고유/기본 키 위반이있는 경우 order 필드 만 변경합니다.

+0

예. 그 속임수를하는 것처럼 보였습니다. :) 그 빌어 먹을 예약어를 잊어 버렸습니다. 나는 더 나은 오류 메시지를 원했을 것입니다. :) –

+0

불행히도, 그것이 예약 된 이유입니다. mysql은 당신이 쓴 것을보고, "주문"을 보았습니다. "흠, 코더가 필드리스트에서 주문 조항으로 점프 한 것처럼 보입니다." –

+0

아 물론. 마크. 고맙습니다! –