PL/Python 저장 프로 시저 세트를 작업하고 있습니다. PostgreSQL 9.3 (apt.postgresql.org에서 설치) 및 Python 2.7 인터프리터를 사용하고 있습니다. 우분투에서 실행 13.04.PL/Python 오류 "SPI 오류를 파이썬 예외로 변환 할 수 없습니다"
큰 작업 중간에 오류가 발생합니다 (300,000 행 이상인 원본 테이블의 데이터를 사용하고 PL/Python 저장 프로 시저를 사용하여 일부 필드를 계산하는 구체화 된보기 생성). 내가 할
오류 출력은 다음과 같습니다
이ERROR: could not convert SPI error to Python exception
CONTEXT: PL/Python function "get_first_level_parent"
********** Error **********
ERROR: could not convert SPI error to Python exception
SQL state: XX000
Context: PL/Python function "get_first_level_parent"
("get_first_level_parent는"저장 프로 시저 중 하나의 이름입니다).
PostgreSQL 서버 로그는 더 이상 조명을 제공하지 않습니다 (PostgreSQL 및 PL/Python 내부에 익숙하지 않습니다). 자세한 오류 로깅을 실행하는 경우,이 얻을 :
2013-10-18 12:56:43 EAT ERROR: XX000: could not convert SPI error to Python exception
2013-10-18 12:56:43 EAT CONTEXT: PL/Python function "get_first_level_parent"
2013-10-18 12:56:43 EAT LOCATION: PLy_spi_exception_set, plpy_spi.c:576
PostgreSQL의 오류 코드 문서 XX000
가 internal_error
에 대한 오류 코드임을 알려줍니다. 저장 프로 시저에 대한 호출을 분리하여 자신의 명령문 (예 : SELECT get_first_level_parent(373673007)
)에서 실행하면 오류가 발생하지 않습니다.
내 질문은 -이 도구를 사용하여 어떤 종류의 오류를 디버깅 할 수 있습니까? 현재의 문제에 대해서는 저장 프로 시저 (천천히 한 번에 하나의 작은 부분 만 테스트)를 다시 작성하여 문제를 "해결"할 것입니다. 그게 유일한 길이야?
PostgreSQL 개발 환경을 설정해야한다고해도 오류가 무엇인지 밝혀지면 (내 대답은 아래 참조), 이는 유효한 디버깅 기술이 될 것입니다. –