LJC.LOG
November 2, 2023

TypeError: Do not know how to serialize a BigInt 에러조치

DB 툴에서 정상적으로 조회되던 쿼리문이 웹에서 호출되었을 때, 아래와 같은 에러가 발생했습니다.

아래와 같이 에러가 발생 됨.( TypeError: Do not know how to serialize a BigInt )

쿼리가 잘못된 것은 아니나 해당 오류가 왜 발생 했을까요?

아래는 에러가 발생된 화면 입니다.

1) 에러화면

쿼리 실행 오류메세지

에러 원인 : 에러 원인은 서브쿼리의 count(*) 부분에서 발생했습니다. 이는 JSON이 기본적으로 BigInt 유형을 지원하지 않기 때문입니다. JSON.stringify() 함수는 BigInt를 처리할 수 없어서 발생한 이슈입니다.

위와 같은 쿼리를 실행할 때, count(*) 결과가 BigInt로 반환되면서 JSON 문자열로 변환하는 과정에서 에러가 발생했습니다.

소스코드 예시

2) 해결방법

이 문제를 해결하기 위해서는 BigInt 데이터를 JSON으로 변환하기 전에 다른 데이터 타입으로 형변환해주면 됩니다.

MariaDB에서는 CAST를 이용하여 char 타입으로 형변환을 시켜줄 수 있습니다.

아래와 같이 수정하여 해결

변경 전 : (SELECT count(*) from blog.board_comment WHERE board_id = T1.board_id AND comment_id = T1.id) ) AS re_comment_cnt

변경 후 : CAST((SELECT count(*) from blog.board_comment WHERE board_id = T1.board_id AND comment_id = T1.id) AS CHAR) AS re_comment_cnt

이렇게 수정하면 BigInt 값을 CHAR 타입으로 변환하여 JSON.stringify() 함수에서 처리할 수 있게 됩니다.

결론

간단하게 데이터 타입을 확인하고 형변환을 해주면 TypeError: Do not know how to serialize a BigInt 에러를 해결할 수 있습니다.

같은 에러에 봉착한 분들은 데이터 타입을 확인해주시고 적절한 형변환을 통해 문제를 해결하시기 바랍니다.

이 포스팅이 도움이 되었다면 다른 분들에게도 공유해주세요.

앞으로도 유익한 정보를 제공하기 위해 노력하겠습니다. 감사합니다.

Related Posts