aws ec2 linux 서버에 배포한 react + spring 프로젝트 - 오류 해결하기-2

임은상·2023년 9월 1일
0

이전 글에서 이어집니다.

며칠 동안 삽질을 거듭한 끝내, 현재는 원인을 파악하고 해결했습니다. 그 과정을 기록하겠습니다.

원인 파악하기

로컬 개발 환경(localhost)에서 ec2 서버 db에 연결하여 빌드를 시도하다가 동일한 오류 페이지를 볼 수 있었습니다.

오류 화면
동시에, intellij의 Service Console에서 'SQLExceptioin', 'Incorrect string value' 라고 쓰여진 오류 내용을 찾아냈습니다. (이미지 캡처는 하지 못했습니다.) 검색을 통해 정확한 원인을 파악했는데, db 한글 적용 관련 문제라고 합니다.

mariadb 한글 적용

문자셋(characterset) 확인

우선, mariadb에 접속하여 문자셋을 확인합시다.

MariaDB [(none)]> show variables like 'c%';

결과 화면
이런식으로, 문자셋을 보면 중간에 latin1로 설정되어 있는 것을 확인할 수 있습니다. latin1은 한글을 지원하지 않으므로 모두 utf8로 변경해야 합니다.

mariadb 한글 환경 만들기

환경 설정 파일이 있는 디렉터리로 이동한 후, 각 환경 설정 파일에 내용을 입력해줍니다.

cd /etc/my.cnf.d

cf. mariadb 버전에 따라 'my.cnf.d' 디렉터리에 여러 환경 설정 파일이 있을 수도 있고, '/etc/my.cnf' 파일 한 개일 수도 있습니다. 저는 전자이고, 전자에 해당하는 글을 참고하여 작성했습니다.
결과 화면

1. client.cnf

vi client.cnf
[client]
default-character-set=utf8

결과 화면

2. mysql-client.cnf

vi mysql-client.cnf
[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

결과 화면

3. server.cnf

vi mariadb-server.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init_connect=set names utf8

결과 화면

4. mariadb 재시작

systemctl restart mariadb

5. characterset 확인

MariaDB [(none)]> show variables like 'c%';

결과 화면

또는,

MariaDB [(none)]> status

모두 utf8로 변경된 것을 확인할 수 있습니다.

database characterset 변경

utf8로 바꾸기 전에 데이터베이스가 latin1 인코딩으로 설정되어 있을 가능성이 있습니다. 이러한 경우에는 다음 명령어를 입력하여 데이터베이스 문자셋을 utf8로 변경해야 한다고 합니다.

MariaDB [(none)]> ALTER DATABASE [데이터베이스명] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

하지만, 저는 해당 명령어가 먹히지 않아 데이터베이스를 삭제하고 다시 만들었습니다.

MariaDB [(none)]> DROP DATABASE [데이터베이스명];
MariaDB [(none)]> CREATE DATABASE [데이터베이스명];

잘 되는지 최종 확인

로그인 전
로그인 중
로그인 후
잘 되네요. 기쁨의 눈물이 납니다. ㅠㅠ

오류를 해결하며 느낀점 & 인사이트

가장 크게 깨달은 점은 "그냥은 없다. 항상 궁금해하고 이해하자" 였습니다.
사실 ec2 서버에 mariadb 외부 접속 허용 설정 직후, 로컬 개발 환경(localhost)에서 ec2 서버 db에 연결하여 빌드를 시도했었습니다. 기억상으로는 아마 그때도 오류 페이지를 봤었는데, '아직 배포를 완성하지 않았으니까 그냥 그런가보다' 하고 넘어갔던 거 같습니다.
만약 그때 좀 더 살펴봤더라면, 오래 삽질하지 않았을 거 같습니다. 그래서 앞으로는 좀 더 궁금해하고 의심하는 습관을 기르자고 생각했습니다.


참고

https://app-developer.tistory.com/121
https://majjangjjang.tistory.com/15
https://www.codingfactory.net/11333

profile
임은상

0개의 댓글