1. MySQL에서 한글 문자 ???? 깨져서 저장되는 현상 (UTF8)
q 작업환경
¡ SQL 클라이언트 : Toad for MySQL Freeware 7.5
¡ 서버 : 리눅스
¡ SQL 서버 : mysql
TOAD Mysql에서 아무리 한글명으로 update 하고나면 아래처럼 ?????로 수정됨.
2. 원인
우선 아래 명령어로 현재 DB character set 확인
show variables like 'c%'
상당부분이 latin1 로 설정되어 있음을 확인
이를 어떻게 utf8로 변경할 수 있는가?
3. 조치
3.1 데이터베이스 character set 변경
우선 아래처럼 latin1로 설정된 데이터베이스 character set부터 utf8로 변경하도록 함.
toad sql에서 아래를 수행해본다.
ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;
아래처럼 ut8로 변경된 것 확인
그 다음에 다시 한글로 update 했는데 역시나 ???? 로 저장된다. (실패ㅠㅠ)
3.2 리눅스에서 mysql 환경설정 파일 변경 (my.conf)
q 리눅스 콘솔로 직접 접속한다.
mysql의 환견설정파일은 보통 my.cnf이다.
어디에 있는지 find 명령어로 찾아본다.
[root@test etc]# find / -name my.cnf
/etc/my.cnf
/etc/my.cnf 위치를 확인했다.
q 환경설정 파일을 편집한다.
vi my.cnf
vi 편집기로 설정파일은 열고 아래의 내용을 추가해줌
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
이후 변경된 설정파일을 적용하기 위해 mysqld 서비스(데몬)을 재시작해야 함
재시작
[root@test]# ./mysqld restart
mysqld 를 정지 중: [ OK ]
mysqld (을)를 시작 중: [ OK ]
q Toad MySQL에서 다시 한글로 저장해본다
각 항목별 문자열 set이 어떻게 되어 있는지 확인하기 위해 sql 에디터에서 아래의 명령어를 쳐본다.
show variables like 'c%'
모두 utf8로 설정(변경)되어 있음을 확인할 수 있다.
이제 다시 데이터를 한글로 업데이트해보자.
결과는 성공!
위와 같이 정상적으로 한글이 수정되어 저장됐음을 확인할 수 있다.
'IT 공부 > SQL, DB' 카테고리의 다른 글
[MS SQL] FOR XML PATH와 STUFF 활용 (0) | 2018.11.28 |
---|---|
[MS SQL] split 분할 반환 함수 (문자형, 정수형) (0) | 2018.11.28 |
[MS SQL] 과거 5개년 년도 보여주기 (다중테이블반환 함수, 임시테이블 활용) (0) | 2018.11.06 |
[MS SQL] PRIMARY KEY 컬럼에 널체크시 INDEX 풀림(속도 느려짐) (0) | 2018.10.31 |