웹모아
웹모아[손님] 검색   로그인    


 
백업/기타
 


Mysql-4.1.13 의 한글 문제. | 리눅스
  2007-03-06 00:07:13 댓글:(0)   조회:455


Character-set이 문제가 되어 기존 서버의 있던 데이터들이 모두 깨져서 보이는 것이다. 

해결 방법은 간단했다. 컴파일 시에 character-set 옵션을 지정해서 euckr로 지정해 주는 것이다. 

기존 서버의 MySQL 버전은 3.2 였는데 Mysqldump를 떠서 4.1.13버전에 import를 시키면 한글 데이터의 경우 모두 깨져 보였지만, character-set=euckr 옵션을 주고 컴파일을 하고 나서 import를 하자 모두 정상으로 되었다. 

근데 특이한 것은 4.1.13에서는 테이블에 Default Character set 이 항상 정의되어 있다는 것이다. 지정하지 않으면 컴파일시의 디폴트값인 Latin1으로 되고 이후 생성되거나 import 되어지는 모든 테이블에서 디폴트값인 Latin1으로 문자셋이 세팅된다. 따라서 반드시 컴파일시에 문자셋을 euckr로 해주어야 한다.

그럼 이미 import 되어버린 테이블의 경우 어떻게 할까?

alter table Tour default character set euckr;

위와 같이 테이블의 default character set 을 euckr로 바꾸어 주면 된다. 문제는 이렇게 하게 되면 테이블안의 컬럼의 경우의 문자셋은 그대로 Latin1이라는 것이다. 컬럼들을 모두 아래의 과정을 거쳐 변환해줘야 한다.

alter table Tour modify CateCode binary(700);
alter table Tour modify CateCode varchar(20) character set euckr collate euckr_korean_ci default NULL;

binary로의 변환을 한번 거쳐줘야 한다. binary는 문자셋 특성이 없기 때문에 Latin1문자들의 문자셋 속성을 없애게 된다. 그렇다고 한글 특성까지 없어지는 것은 아니다. 두번째 과정에서 기본문자셋을 지정해주면된다.

하지만 이것도 문제인것이 컬럼이 엄청날경우 쌩노가다가 아닐수 없다는 것이다. 그때는 스크립트를 쓰던지 아니면 컴파일할때 문자셋을 지정해 주던지 해야 한다.

그런데 배포판의 경우는 어떻게 해야 하남? 다 지우고 재 컴파일을 해야 하나? 그럴수 있는 관리자라면 문제가 없지만 그리고 APM으로 이미 연동이 되어버린 경우는 참 난감하다.

아직 MySQL에 데이터를 입력하기 전이라면 /etc/my.cnf 의 [mysqld], [mysql] 세션에 아래와 같이 한줄 추가해준다.

default-character-set=euckr

또한 mysql 터미널로 접속하고나서 아래의 명령어로 지정된 문자셋을 알수 있다.

mysql> show variables like '%character\_set%';

+--------------------------+-----------------------------------+
| Variable_name            | Value                             |
+--------------------------+-----------------------------------+
| character_set_client     | euckr                             |
| character_set_connection | euckr                             |
| character_set_database   | euckr                             |
| character_set_results    | euckr                             |
| character_set_server     | euckr                             |
| character_set_system     | utf8                              |
| character_sets_dir       | /www2/mysql/share/mysql/charsets/ |
+--------------------------+-----------------------------------+
mysql>set character_set_client=euckr    <- 문자셋 변경



 댓글 (0)


백업/기타
페이지: 1 / 2   


     XtraBackup을 이용한 MySQL 백업 및 복77
     MySQL DB 백업 및 복구 - mysqldump504
     [MySQL] 리눅스DB를 윈도우DB로 이전(Too425
       [RE] [MySQL] 리눅스DB를 윈도우DB로 이650
     정보통신부 제공 우편번호부 원본파일747
     mysql 원격접속방법707
     가격비교 참고자료(홈마스타)(3) 512
     리눅스에서 PHP 콘솔을 이용한 MySQL DB 백(홈마스타)576
     utf8 환경으로 자료 conversion 성공기(홈마스타)544
  Mysql-4.1.13 의 한글 문제. | 리눅스(홈마스타)456
     MySQL 5.0 euckr 문자세팅(홈마스타)498
     mySql 처리 함수(홈마스타)1281
     mysql의 주요 함수(홈마스타)1102
     MySQL 백업(홈마스타)483
     mysql 과 함께 사용되는 명령어 사용법(홈마스타)462
     mysql의 최대 성능 향상 방법(홈마스타)786
     리눅스에서 PHP 콘솔을 이용한 MySQL DB 백(홈마스타)513
     PHP로 MySQL 백업받기(홈마스타)691
       [RE] PHP로 MySQL 백업받기(홈마스타)494
     ORDER BY 에서 조건걸기(홈마스타)564
     백업과 복구(홈마스타)555
     리눅스 서버에서 홈페이지의 DB를 백업할려면?(홈마스타)562
     MySQL 데이터 백업 및 복구 | Database(홈마스타)(1) 821
       [RE] MySQL 데이터 및 구조의 백업 - 실제(홈마스타)553
     mysql 주기적으로 백업하기(홈마스타)616
     웹서버와 DB서버를 분리해서 운영할려면?(홈마스타)750
     백업받는 스크립트(홈마스타)676
     서브 쿼리 지원되는 MySQL 버젼...(홈마스타)591
     MySQL Dump뜨는 방법 및 복구 방법(홈마스타)620
       [RE] MySQL Dump뜨는 방법 및 복구 방법(홈마스타)808
≪ [1]  [2]   ≫

복수단어 검색은 공백(space)로 구분해 주세요.



 
최근 글
[손님]
85
77
233
377
621
374
416
241
361
3809
914
954
1200
974
4266
 
인기 글
[손님]
3445
  [랜드모아] 영문과 숫자만 사용
3101
3816
4146
4850
3364
3073
3450
4512
5315
4875
3825
19374
4513
3766