Files
ai_platform/docs/AX-APPLY-ARRAY-ERROR-ANALYSIS.md

1.9 KiB

AX 과제 신청 "malformed array literal: """ 오류 원인 분석

1. 오류 발생 조건

  • 오류 메시지: malformed array literal: ""
  • 발생 시점: 필수값만 입력 후 저장 시 (techStack, risks 필드 비어 있음)
  • PostgreSQL: text[] 컬럼에 빈 문자열 ""이 전달되면 발생

2. 데이터 흐름 추적

2.1 프론트엔드 (ax-apply.ejs)

FormData 수집 → fd.forEach로 data 객체 생성 → JSON.stringify(data) → POST /api/ax-apply

techStackStr, risksStr가 비어 있을 때:

  • fd.forEach: k="techStackStr", v="" (빈 문자열)
  • k === 'techStackStr' && v → v가 ""(falsy)이므로 건너뜀
  • k !== 'techStackStr' → k가 techStackStr이므로 건너뜀
  • 결과: data에 techStackStr, risksStr가 포함되지 않음 (undefined)

→ 이론상 빈 문자열이 전송되지 않아야 함.

2.2 백엔드 (server.js)

node-pg 알려진 이슈: JavaScript 빈 배열 []text[] 파라미터로 전달하면, node-pg가 ""로 직렬화함.

  • PostgreSQL은 ""를 배열 리터럴로 파싱할 수 없음 → malformed array literal: "" 발생

해결책: 배열 컬럼에 파라미터 대신 SQL 리터럴 '{}' 사용 (이미 server.js에 적용됨)

3. 가능한 원인

원인 가능성 설명
배포 서버 미재시작 높음 수정된 server.js가 반영되지 않음. PM2 등으로 재시작 필요
브라우저/FormData 차이 낮음 일부 환경에서 빈 필드가 ""로 전송될 수 있음
기타 배열 필드 낮음 dataTypes, qualitativeEffects 등 (폼에 없음)

4. 권장 조치

  1. 서버 재시작: pm2 restart webplatform (배포 환경)
  2. 프론트엔드 방어: 전송 직전 배열 관련 빈 문자열 제거
  3. 배포 반영: 최신 server.js가 배포 서버에 반영되었는지 확인