반응형
문제 상황:
AJAX 요청을 하고 JSON 응답을 기대할 때 파싱 오류.
특히 JSON 형식이 올바른 것처럼 보일 때 이러한 오류는 더욱 당혹스럽습니다.
데이터베이스 데이터에 개행 문자가 포함되어 있는 것이 흔한 원인 중 하나입니다.
제가 겪은 문제도 엑셀 파일에서 CSV로 가져온 데이터에 원치 않는 개행 문자가 포함되어 발생한 문제였습니다.
JSON 데이터는 JSON 검사기를 통해 확인했을 때 완벽해 보였는데 AJAX는 계속해서 파싱 오류를 발생시켰습니다.
이로 인해 문제가 JSON 형식 자체가 아니라 데이터베이스에서 가져온 내용에 있다는 것을 깨달았습니다.
문제의 진짜 원인은 데이터베이스에서 SELECT 쿼리를 실행할 때 개행 문자가 포함되어 오는 것이었습니다.
눈에 보이지 않는 이 문자들이 JSON 파서를 혼란스럽게 만들었습니다.
온라인에서 흔히 제시되는 해결책은 SQL UPDATE 문을 사용하여 개행 문자를 대체하는 것이었습니다:
UPDATE [테이블명] SET [칼럼명] = REPLACE([칼럼명], '\r\n', '');
하지만 이 방법으로는 문제가 해결되지 않았습니다.
실제 해결책:
추가 실험을 거친 결과, SQL 쿼리에서 중첩된 REPLACE 함수를 사용하여 두 종류의 개행 문자(\r과 \n)를 모두 제거하는 것이 해결책이었습니다:
UPDATE [테이블명] SET [칼럼명] = REPLACE(REPLACE([칼럼명], '\n', ''), '\r', '');
개행 문자 확인 방법:
SQLyog를 사용하는 분들에게는 텍스트 모드에서 데이터를 보는 것(인터페이스에서 빨간 버튼을 통해 접근 가능)이 개행 문자를 확인하는 유용한 방법입니다.
이 모드를 사용하면 숨겨진 개행 문자를 쉽게 발견할 수 있습니다.
반응형
'IT > DB' 카테고리의 다른 글
[MYSQL] INDEX (0) | 2022.10.19 |
---|---|
[MYSQL] 외래키 속성 변경, 수정, 삭제 및 조회하기 (0) | 2022.09.28 |
[MSSQL] RAISERROR란, 프로시져 에러 메세지 발생시키기 (0) | 2022.06.27 |
[MYSQL] SELECT 결과로 테이블 생성 (0) | 2022.06.23 |
[MSSQL] 다중 칼럼 PIVOT, 동적 PIVOT, 동적 UNPIVOT (0) | 2022.05.04 |