42P02: undefined_parameter
PostgreSQL의미
쿼리가 존재하지 않는 파라미터를 참조한다. PostgreSQL은 참조된 위치 파라미터(예: $2)가 정의되지 않았다고 보고한다. Class 42(syntax_error_or_access_rule_violation)에 속한다.
원인
PREPARE로 준비한 문장에서 제공한 것보다 많은 파라미터를 참조하거나(예: 파라미터 두 개를 보내고 $3 사용), 파라미터 번호를 건너뛰었거나, 동적으로 연결한 SQL에서 $N 인덱스가 잘못된 경우다.
해결 방법
파라미터 번호가 제공하는 값의 개수와 일치하는지, $1부터 시작해 빈틈없이 이어지는지 확인한다. PREPARE 문에서 파라미터 타입을 완전히 정의한다: PREPARE p(int, text) AS SELECT ... WHERE a=$1 AND b=$2; ORM/드라이버를 사용한다면 바인딩된 파라미터 수와 쿼리의 플레이스홀더를 비교한다.