피드로 돌아가기
Dev.toDatabase
원문 읽기
PostgreSQL 22036 에러 해결을 통한 JSON 데이터 타입 안정성 확보
PostgreSQL 22036 Error: Causes and Solutions Complete Guide
AI 요약
Context
PostgreSQL 12부터 도입된 SQL/JSON Path 기능 사용 중 숫자 연산 대상이 비숫자 타입(String, Boolean, Null 등)일 때 발생하는 22036 에러 분석. 외부 API 연동 및 레거시 시스템의 불일치한 데이터 타입 저장으로 인한 런타임 예외 발생 상황.
Technical Solution
.double()메서드 활용을 통한 JSON Path 내 String 타입의 즉각적인 Numeric 변환 처리- 와일드카드(
[*]) 및 특정 인덱스 지정으로 Array 전체에 대한 산술 연산 시도 방지 및 원소별 접근 구조 설계 - JSON Path 필터 표현식(
? (@ != null))을 통한 Null 및 비정상 타입의 사전 필터링 체계 구축 jsonb_typeof()함수 기반의 Guard Clause를 SQL 레벨에 적용하여 타입 불일치로 인한 쿼리 중단 방지- PL/pgSQL 기반의
safe_json_numeric헬퍼 함수를 구현하여 Exception Handling 기반의 기본값 반환 로직 표준화 CHECK제약 조건 설정을 통한 Insert 시점의 JSON 데이터 타입 강제 검증 프로세스 도입
실천 포인트
1. 외부 유입 JSON 데이터의 숫자 필드에 대해 `.double()` 변환 또는 `::numeric` 캐스팅 적용 여부 검토
2. JSON Path 연산 전 `? (@ != null)` 필터를 통한 데이터 정제 단계 추가
3. 런타임 에러 방지를 위한 `jsonb_typeof()` 기반의 타입 검증 로직 설계
4. 데이터 무결성 보장을 위해 테이블 생성 시 `CHECK` 제약 조건으로 JSON 내부 타입 강제