각종 팁&정보를 나누는 곳입니다.
누군가에게 도움이 된다 싶으시면 언제라도 포스팅 :)
글 등록하기 | 내글 관리하기 | 연재글 | 보관함
웹마스터
첨부파일 https://imweb.eond.com/webtip/219172
설명

MySQL 5.x 대에서 기본적으로 생성되는 DB의 문자코드는 'latin1'입니다. 이 경우 한글 쿼리로 작업시 원하는 결과가 출력되지 않습니다. 이 경우 기존 데이터의 경우 백업받아 utf8 코드 형태로 전환해야 합니다.

요약

1. 데이터베이스 문자 코드 확인
2. 기존 데이터베이스 백업, 새 데이터베이스 생성
3. 백업 데이터 수정(euckr 또는 utf8)
4. 백업 데이터 복구
5. MySQL 환경설정(my.cnf) 파일 수정


1. 데이터베이스의 문자코드를 확인합니다.

확인하는 방법은 MySQL에 클라이언트로 접속해서

mysql > use 디비명;
mysql > show variables like 'c%';

설치 후 MySQL 설정(my.cnf 등)을 바꾸지 않았다면 'latin1'로 맞춰져 있습니다.  


2. 기존 데이터베이스를 백업합니다.

리눅스 터미널에서

$ mysqldump -u root -p 디비명 --default-character-set latin1 > 디비명.sql

다른 DB 명이라면 디비를 새로 받들면 되지만 같은 이름의 DB명을 써야한다면 삭제를 해야합니다.

mysql > drop database 디비명;

MySQL에 클라이언트에서 DB를 만듭니다.

mysql > create database 디비명 default character set utf8;


3. 백업받은 데이터를 수정합니다.

$ vi 디비명.sql

MySQL로 접속하는 클라이언트의 문자코드에 따라 달리 처리해 줍니다.

utf8을 사용한다면 SET NAMES latin1; 을 찾아 latin1을 utf8로 바꿉니다. 
euckr을 사용한다면 SET NAMES latin1; 을 찾아 latin1을 utf8로 바꿉니다. 

혹시 모르니 latin1 이란 이름으로 한번 찾기를 해본 후에

1,$s/latin1/uft8/g  로 파일 전체의 문자열을 바꿉니다.


4. 백업데이터를 복구합니다.

$ mysql -u root -p 디비명 < 디비명.sql


5. MySQL 환경설정(my.cnf) 파일을  수정합니다.
우분투 : /etc/mysql/my.cnf
레드햇5 엔터프라이즈 : /etc/my.cnf

$ vi my.cnf

[client]
default-character-set=utf8

[mysqld]
init_connect=SET collation=utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8                      # 새 DB 생성시 character-set 옵션 없을시 기본값
collation-server=utf8_general_ci

각 [] 항목별로 추가해줍니다.

재기동 합니다. 택1..

# service mysqld restart    <-- 리눅스 계열
# /etc/rc.d/mysql restart    <-- BSD 계열
# /etc/init.d/mysqld restart     <-- 리눅스 계열







이와는 별개로 utf8 과 euckr을 혼용해서 쓰는 방법도 있습니다. 지금은 대부분 euckr에서 utf8로 갈아탄 상황입니다만 필요한 경우 다음을 참고 합니다.

[참고글]MySQL UTF-8,EUC-KR 같이 쓰는 경우 캐릭터셋 문제 해결

요약하자면, 

1. my.cnf 파일의 설정을 바꿉니다.

[mysqld] 항목에
character_set_server=euckr           <-- 새로 DB 생성시 기본값, 주로 쓰는게 utf8이라면 utf8로 지정합니다.
init_connect=SET names binary      <-- 이 부분 추가

2. 디비 백업 또는 전체 디비 백업(mysqldump -A)합니다.

3. 백업 데이터 수정합니다.

3.1 캐릭터셋이 하나라면 건너 뛰어도 무방합니다.

3.2 여러 캐릭터셋 사용시 DB 생성 부분에 캐릭터셋을 수정합니다.
단, 위의 character_set_server 에서 지정한 캐릭터셋으로 DB를 만들기때문에 다른 캐릭터셋으로 할 DB만 수정합니다.

원래:

(..생략..)
CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest-euc-kr;
(..생략..)
CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest-utf-8;
(..생략..)

수정:

(..생략..)
CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest_euc_kr;
(..생략..)
CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest_utf_8 CHARACTER SET utf8;
(..생략..)

3.3 DB 별로 백업받았다면 하나씩 DB를 만들면서 charset을 지정해 줍니다.

4. DB를 복구합니다.

mysql -p --default-character-set=binary < dump.sql

DB에 따라 다르게 지정할 수도 있습니다.

mysql -p --default-character-set=euckr < dump.sql
mysql -p --default-character-set=utf8 < dump.sql


UTF-8 데이터베이스라도, 해당 디비 세팅을 euc-kr 로 하면 해당 디비는 euc-kr 로 보입니다.

ALTER DATABASE `디비` DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci
ALTER TABLE `테이블` DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci

등의 명령어로 바꾸실 수 있고, phpMyAdmin 의 "테이블 작업" 탭에서도 가능합니다.

데이터베이스가 골라진 상태에서 "테이블 작업" 탭을 누르면 데이터베이스의 캐릭터셋을,
테이블이 골라진 상태에서 "테이블 작업" 탭을 누르면 테이블의 캐릭터셋을 바꿀 수 있습니다.
이 캐릭터셋이 제대로 지정되지 않은 경우엔 정렬이나 글자 수 때문에 문제가 생길 수 있으니 주의하세요.


---------------------------------------------------------------------

여기까지입니다. kldp 자료가 날아 갈까해서 옮겨놨습니다. 좀더 자세한 사항은 링크를 참고하면 됩니다.
코멘트 0
접기/펴기 | 댓글 새로고침
 
 
Total 683 articles in 16 / 57 pages
번호 제목 제목 조회 수 날짜날짜
503 [윈도우서버] vultr 에 윈도우 서버 iso 사용하기 714 2017/04/17
502 [Apm] 오토셋(autoset) 설치할 때 “MSVCR110.DLL” 문제 766 2015/08/29
501 [GitHub] 카페24에서 github 다운로드 받는 방법 파일 773 2018/08/02
500 [엑셀] [엑셀]티켓 출력하기(일련번호 출력)-1 파일 812 2019/02/03
499 리눅스 cp 명령어 사용법 정리 (파일, 디렉토리 복사, 백업) 파일 814 2020/12/12
498 [윈도우] Windows 10 사용 중 DISM 도구 사용 시 0x800f081f 오류 파일 827 2020/07/29
497 [윈도우서버] [autoset] Autoset (오토셋) - MySQL「서버를 시작하지 못했습니다」에러 해결 (= Autoset, DB접속에러, 서버실행오류,Warning: mysqli_connect(): in ..Error, Connect Error:) 833 2020/02/15
496 [리눅스서버] 리눅스 소켓 접속 수 제한 풀기 837 2017/04/18
495 [윈도우] svg viewer - 탐색기에서 바로 svg 아이콘 이미지로 보는 방법 888 2020/08/10
494 [리눅스서버] mysql strict mode 끄기 888 2018/03/29
493 [GitHub] 깃허브 오류 해결.. 997 2015/06/29
492 [엑셀] 무료 Excel 용 Kutools(Kutools for Excel) 대체 프로그램 8개 998 2019/02/03

해시태그 디렉터리