오류 코드#
AgensGraph 서버가 내는 모든 메시지는 PostgreSQL과 똑같이 다섯 글자의 SQLSTATE 코드를 지닙니다. 앞 두 글자가 오류의 부류를, 뒤 세 글자가 그 안의 구체적인 상황을 가리킵니다. 그래서 코드를 모르는 애플리케이션도 그 부류를 보고 대응할 수 있습니다.
AgensGraph는 자체 오류 코드를 정의하지 않습니다. 오류 코드 목록이 PostgreSQL 18의 것과 바이트 단위로 같으며, 실패한 그래프 문장은 PostgreSQL에 이미 있는 코드 중 하나를 냅니다. PL/pgSQL이 각각에 쓰는 상황 이름을 곁들인 전체 코드 목록은 PostgreSQL의 Error Codes 부록에 있습니다. 여기서는 옮겨 적지 않습니다.
클라이언트에게 이것이 뜻하는 바는, 그래프에만 해당하는 실패를 코드로 알아볼 수 없다는 것입니다.
multiple types for relationship not supported와 Cypher query must end with RETURN, FINISH or update clause는 0A000과 42601로 옵니다. 지원하지 않는 SQL 기능과 SQL 구문 오류가 쓰는 것과
같은 코드입니다. 그 둘을 갈라야 한다면 메시지 텍스트로 대조하고, 믿을 것은 부류라고 여기십시오.
코드 읽기#
psql에서 \set VERBOSITY verbose를 실행하면 그 뒤의 모든 오류가 자기 SQLSTATE와 그것을 낸 소스
위치를 함께 보여 줍니다:
\set VERBOSITY verbose
MATCH (m:movie {year: 1999}) WHERE m.title RETURN count(m);
ERROR: 42846: cannot cast "The Matrix" (jsonb type string) to boolean
LOCATION: ExecEvalCypherTypeCast, execExprInterp.c:5900
VERBOSITY를 sqlstate로 두면 코드만 출력합니다. 드라이버에서는 그 코드가 오류 객체의
필드이며, 대부분의 PostgreSQL 클라이언트에서 sqlstate입니다.
그래프 문장이 흔히 내는 코드#
그래프 작업에서 만나게 될 코드들이며, 각각에 실제 메시지를 곁들였습니다. 상황 이름은 PL/pgSQL과 대부분의 드라이버가 쓰는 것입니다.
코드 |
상황 이름 |
예를 들어 이런 것이 냅니다 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
그중 세 행이 예상해야 할 방식을 보여 줍니다. 그래프는 스키마이고, 레이블은 테이블이며, 속성은
jsonb 값입니다. 그래서 그래프의 오류는 그것이 실제로 관계된 PostgreSQL 객체의 부류로
보고됩니다.
관련 항목#
Cypher 호환성 — 다른 Cypher에서 옮겨 온 쿼리가 부딪히는 오류와 그 문구
제한 —
22023과54000을 내는 두 제한용어집 — 이 메시지들이 쓰는 용어