Programing Language/Database

MYSQL) 한글이 ??? 으로 작성될때 문제 해결 UTF-8 (ubuntu 18.0.4)

Jude_Song 2022. 10. 28. 14:54
728x90
반응형

MySQL에 INSERT 작업을 하면 한글이 ???로 깨져서 저장이 되거나, incorrect string value: '\xE3\x84\xB4\xE3\x85\x87...' for column과 같이 INSERT가 안될때가 있습니다.

이런 경우는 주로 데이터베이스의 인코딩 타입이 UTF-8로 제대로 설정이 안되서 발생하는 에러입니다.

이번 포스팅에서는 Windows에서 MySQL 한글 깨짐 문제의 원인인 character_set을 UTF-8로 변경하는 것을 다뤄보겠습니다.

MySQL은 모두 설치되어 있다고 가정하고 본 포스팅에서는 character_set을 UTF-8로 변경만 하겠습니다.

 

1. MySQL character_set을 검색하기

아래와 같이 c로 시작하는 것들을 검색해보면 다음과 같이 character_set 관련 설정이 나옵니다.

현재 저는 character_set_* value가 모두 utf8로 설정이 되어있습니다.

utf8로 설정이 되어 있지 않은 분들은 mysql.cnf 파일을 수정해줍니다.

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       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
| check_proxy_users        | OFF                                                     |
| collation_connection     | utf8_general_ci                                         |
| collation_database       | utf8_general_ci                                         |
| collation_server         | utf8_general_ci                                         |
| completion_type          | NO_CHAIN                                                |
| concurrent_insert        | AUTO                                                    |
| connect_timeout          | 10                                                      |
| core_file                | OFF                                                     |
+--------------------------+---------------------------------------------------------+
16 rows in set, 1 warning (0.01 sec)

 

- mysql.conf위치 

vi /etc/mysql/conf.d/mysql.cnf

 

- 값 붙여 넣기

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

- 서버 재시작

service mysql stop
service mysql start

 

도움되셨다면 개발자에게 커피한잔을 위해 광고클릭!!

728x90
반응형