반응형
이번 포스트는 오픈 DBMS인 MariaDB의 캐릭터셋을 UTF-8로 설정하는 법을 다뤄보겠습니다.
MariaDB를 처음 사용한다면 모르고 지나치는 부분이 있습니다.
바로 기본 캐릭터셋이 latin1 언어로 설정이 되어 있습니다.
캐릭터셋을 변경해주지 않으면 캐릭터셋 에러로 머리가 아파집니다.
저의 경우에는 캐릭터셋을 변경해주지 않아서 Swagger에서 POST를 테스트하는 과정에서 에러가 발생했습니다.
후에 utf-8로 변경한 후에 테스트를 성공적으로 진행했습니다.
먼저 MariaDB에 접속해 아래의 쿼리를 실행하면 다음과 같은 창이 출력됩니다.
MariaDB [(none)]> show variables like 'c%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
+--------------------------+----------------------------+
14 rows in set (0.01 sec)
보기만 해도 머리가 아플지 모르지만 우리가 주목해야할 부분은 latin1 입니다.
이 latin1을 변경하기 위해서 MariaDB가 설치된 폴더의 하위 폴더인 data에 있는 my.ini을 찾아야합니다.
my.int 파일을 실행한 후에 아래의 코드를 추가를 한 후 저장하시면 됩니다.
추가하실 때 주의할 점이 있습니다.
! mysqld 부분에 추가할 때는 하단에 추가해주시기바랍니다.
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character_set_server = utf8
[client]
default-character-set=utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
MariaDB를 재시작한 후 다시 한 번 쿼리문을 실행하면 아래와 같이 utf-8로 변경된 것을 확인하실 수 있습니다.
MariaDB [(none)]> show variables like 'c%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
+--------------------------+----------------------------+
14 rows in set (0.00 sec)
이렇게 캐릭터셋을 utf-8을 변경해주면 swagger에서 테스트할 때 한글로 값을 입력해도
에러가 캐릭터셋으로 인한 에러가 발생하지 않습니다.
MariaDB를 사용하신다면 꼭 한 번 확인해보시길 바랍니다.
반응형
'Dev > DB' 카테고리의 다른 글
[MariaDB] 스키마 백업 및 복사(Schema Backup & Copy) (0) | 2023.03.15 |
---|---|
[MySQL] 딜리트 조인(DELETE JOIN) (0) | 2023.02.02 |
[MySQL] 구조가 다른 테이블 간의 데이터 복사 (0) | 2020.04.08 |
[MySQL] 데이터베이스 스키마 내 모든 테이블 칼럼 조회(추출) (0) | 2020.04.07 |
[exERD] 포워드 엔지니어링 및 DB 연결오류 해결방법 (0) | 2020.03.19 |