집순이 놀이터

[MYSQL 인코딩] 한글문제 해결 본문

Daily/내공간

[MYSQL 인코딩] 한글문제 해결

방구석집순이 2017. 7. 28. 18:59

한글을 넣고싶은데 안된다.


확인사항 1. my.ini에서 환경설정을 바꾼후 재시작  


1) 인코딩과관련된부분은 파란색! 으로 수정



# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the

# *** default location during install, and will be replaced if you

# *** upgrade to a newer version of MySQL.

[client]

default-character-set=utf8


[mysqld]

character-set-client-handshake = FALSE  

language=C:/Program Files/mysql-5.6.37-winx64/share/korean

init_connect = "SET collation_connection=utf8_general_ci"

init_connect = "SET NAMES utf8"

character-set-server = utf8

collation-server = utf8_general_ci



# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M


# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin


# These are commonly set, remove the # and set as required.

basedir = C:/Program Files/mysql-5.6.37-winx64/

datadir = C:/Program Files/mysql-5.6.37-winx64/data/

port =3306

# server_id = .....

[mysqldump]

default-character-set=utf8


[mysql]

default-character-set=utf8


# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M 


# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 



*구글링 결과  [mysqld] 부분에 default-character-set=utf8 을 추가하는 사람들도 많았다. 

하지만 나는 저 구문을 넣으면 mysql이 시작되지 않았다. 

이유는 아직 모르겟으나, 나와같은 사람들은 참고하시길 


2) mysql 을 서비스에서 재시작한다. (restart 명령어 또한 가능)

3) 확인 !  

show variables like 'c%';

but, database 관련 인코딩 부분이 아직 latin1 이다  . 테스트해보니 아직 한글이 ?? 로 표기된다.


확인사항 2. DATABASE , TABLE, COLUMN의 인코딩 정보 수정 !

=> 이미 잘못 된 인코딩설정으로 생성된 테이블의 경우 데이터베이스의 인코딩정보, 테이블의 인코딩정보, 컬럼의 인코딩 정보모두 확인하여야 한다.

확인하는 컬럼을 다 입력하기 귀찮아서 그냥 다 바꾸어버렸다.



1) DATABASE 의 CHARACTER SET 정보변경


ALTER DATABASE [데이터베이스명] DEFAULT CHARACTER SET [인코딩] COLLATE [인코딩...(이런걸뭐라고하는지모르겟네)]


ex) ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;



 결과확인 

 show variables like 'c%';


성공적.


2) TABLE 의 CHARACTER SET 정보변경


ALTER TABLE [테이블명] CHARACTER SET[인코딩] COLLATE [인코딩...]; 


ex) ALTER TABLE users CHARACTER SET utf8 COLLATE utf8_general_ci; 


3) COLUMN 의 CHARACTER SET 정보변경


모든컬럼마다 다 해주어야 하고 다른 옵션들도 입력해 주어야 한다.


ALTER TABLE [테이블명] MODIFY [COLUMN명] [타입] CHARACTER SET [인코딩] ([옵션]...)


ex ) ALTER TABLE users MODIFY name VARCHAR(100) CHARACTER SET utf8 NOT NULL;



나의 결론 :데이터베이스, 테이블 생성시, CHARACTER SET 설정을 해주자


Database:
(CREATE | ALTER) DATABASE ... DEFAULT CHARACTER SET utf8

Table:
(CREATE | ALTER) TABLE ... DEFAULT CHARACTER SET utf8