2012-08-17 2 views
3

트리거 기능으로 디버깅하려고하는데 오류가 있습니다. Postgres의 로그에서, 나는 다음과 같습니다로그 파일에서 함수 코드로 행 번호 일치

2012-08-16 21:41:23 PDT ERROR: Unknown period: D 
2012-08-16 21:41:23 PDT CONTEXT: PL/pgSQL function "handle_promotion_update" 
    line 60 at assignment 
SQL statement "UPDATE promotion SET some_column = foo + 1 
    WHERE id = NEW.promotion_id" 
PL/pgSQL function "handle_new_reward" line 94 at SQL statement 

을 그래서, 내 문제처럼 보인다 아마, "60 라인"

내 질문에서 시작 줄 번호가 시작하는 곳입니까? 내가 pgAdmin에 가서 함수 선언을 보면 상단에 "도우미"(삭제 기능과 같은)가 있습니다. 그래서 나는 거기에서 왔다고 생각하지 않습니다. 하지만 함수 선언이 포함되어 있습니까? 또는 BEGIN의 줄에있는 것입니까?

답변

2

PostgreSQL 서버 로그에서 볼 수있는 행 번호는 행의 시작으로 기능 본문의입니다. 그 전에 행을 추가하여 pgAdmin SQL 편집기에서 절대 행 번호에 도달해야합니다.

혼란스러워 할 필요가 없습니다. 함수를 만들려고 할 때 오류가 발생하면 다른 줄 번호가 나타납니다. 실행 된 스크립트의 전체를 참조하며 런타임 오류의 줄 번호는 함수 본문을 참조합니다.

+0

안녕하세요 어윈 ... 여기를 따르십시오. "시작 견적"이 1 행이라고 가정하는 것이 맞습니까? 1 기반 번호 매김입니다. 옳은? –

+0

@DavidS : 예, 이해합니다. 9.3의 빠른 테스트 결과는 ... –

+0

@ErwinBrandstetter, "견적 열기"란 무엇입니까? 나는 전에 "내 함수의 시작 부분에서"본 적이 없다. – danjuggler