공부/Trouble Shooting

MariaDB - Incorrect String Value 오류 해결 (한글 인코딩 문제)

son_i 2024. 8. 7. 02:33
728x90

MariaDB 한글 인코딩 오류

{    "errorCode": "INTERNAL_SERVER_ERROR",   
      "errorMessage": "could not execute statement [(conn=10521) Incorrect string value: '\\xEC\\x86\\x8C\\xEC\\x9D\\x80' for column `petory`.`member`.`name` at row 1] [insert into member (created_at,email,image,name,password,phone,updated_at) values (?,?,?,?,?,?,?) returning id]; SQL [insert into member (created_at,email,image,name,password,phone,updated_at) values (?,?,?,?,?,?,?) returning id]",    "httpStatus": "INTERNAL_SERVER_ERROR"}

 

원인 : MariaDB에서는 charset이 default로 설정되어 있어 한글인코딩 오류가 난 것이다.

 

해결

alter table 테이블이름 default charset = utf8;
ALTER TABLE 테이블이름 CONVERT TO character SET utf8;

위와 같이 테이블의 charset을 utf8로 변경해주어도 되지만 나는 현재 ddl-auto 옵션이 create로 되어있어 매번 프로젝트 실행 시마다 테이블을 새로 만들기 때문에 옵션 적용이 유지가 되지 않는다.

 

시도

1. 파라미터 그룹 생성

AWS RDS에 들어가서 파라미터 그룹을 생성해주었다.

 

파라미터 그룹 생성 - 파라미터 그룹 패밀리는 rds mairadb의 버전과 동일하게 설정해주었다.

 

timezone Asia/Seoul로 설정

 

char 검색 후 나오는 모든 항목을 utf8mb4로 변경 

(utf8은 이모지 문자가 입력 안 돼서 utf8mb4로 지정)

 

 

collation 검색 후 나오는 collation_connection, collation_server 값을 utf8mb4_general_ci로 설정

 

RDS 수정에 들어가서 파라미터 그룹을 방금만든 mariadb 로 설정

 

이럼에도 maria db로 들어가서 확인해보면 변경이 되지 않았다.

> show variables like 'char%'

 

2. my.cnf에서 옵션 변경

ec2 서버에 접속해서 /etc/my.cnf에 다음 코드를 추가해주었다.

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

 

그래도 여전히 DB에 저장하려고 할 때 다음과 같은 오류가 나왔다.

 

해결 방법을 찾아보다가 공식문서에서 이런 문구를 발견하였다.

https://mariadb.com/kb/en/server-system-variables/#character_set_database

 

This variable is dynamic, but should not be set manually, only by the server.

 

결론은 database에 대해서는 파라미터로 변경할 수 없고 서버에서 alter 명령어를 사용해 수정해야 한다.

다음 명령어를 입력해주면 된다 !

alter table 테이블이름 default charset = utf8;
ALTER TABLE 테이블이름 CONVERT TO character SET utf8;

 

잘 바뀌었고 서버로 전송을 보내면

잘 저장이 되었다.

 

워크벤치에도 잘 저장 된 것을 확인할 수 있다 ~~~~

이렇게 정말 애먹었던 서브 모듈의 설정파일 정보를 반영해 mariaDB로 저장하기 성공 ,,,,,,,


참고

 

파라미터 그룹 설정에 도움을 받았습니다.

https://velog.io/@ky0_hw/rds-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EA%B7%B8%EB%A3%B9-%EC%84%A4%EC%A0%95

 

rds: 파라미터 그룹 설정

aws의 RDS에 적용할 파라미터 그룹 설정

velog.io

 

공식문서 참조에 도움을 받았습니다.

https://tiveloper.tistory.com/entry/Amazon-RDS-MariaDB-UTF8-%EB%B3%80%EA%B2%BD

 

Amazon RDS MariaDB UTF-8 변경

참으로 간만에 하는 포스팅이군요,,, 그 동안 많이 혼자 바쁘게 일했습니다. 오늘은 아마존 AWS의 RDS에 대해서 간단한 팁을 공유하고자 합니다. 회사 업무가 오스트리아 - 한국 이렇게 이원화 되

tiveloper.tistory.com

 

ALTER TABLE 명령문을 참조했습니다.

https://velog.io/@mic050r/error-Incorrect-string-value%EC%97%90%EB%9F%AC%EA%B0%80-%EB%82%9C-%EA%B2%BD%EC%9A%B0Maria-DB

 

MariaDB에서 Incorrect String Value 오류 해결 방법

인코딩을 UTF-8로 설정하자!

velog.io

 

728x90