ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MYSQL) 한글이 ??? 으로 작성될때 문제 해결 UTF-8 (ubuntu 18.0.4)
    Programing Language/Database 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
    반응형
Designed by Tistory.