이미 입력된 데이타는 백업 후 다시 넣어 주어야 한다.
방법 1
mysql> SET character_set_client = euckr;
mysql> SET character_set_results = euckr;
mysql> SET character_set_connection = euckr;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET euckr;
commit;
방법 2
set names euckr;
저도 이 문제 때문에 골치 아팠던 적이 있습니다.
단순하게 set names euckr 을 해주시면 됩니다.
이 명령은 Server, Connection 의 문자셋을 euckr 로 설정합니다.
mysqld 의 시작옵션이나 my.cnf 의 [mysqld] 섹션에 default-character-set = euckr 옵션을 지정하면 Db, Client 의 문자셋이 euckr로 설정됩니다. mysql 프로그램에서 \s 를 해보면 확인할 수 있습니다. set names 대신 [mysql] 섹션에 default-character-set 을 사용할 수 있는데 이렇게 하면 4.1.8에서는 mysqladmin 이 해당 옵션을 이해하지 못해 제대로 실행이 안됩니다. 4.1.9에서는 mysqladmin 프로그램도 default-character-set 옵션을 사용할 수 있도록 변경되었습니다.
문자셋과 관련하여 주의할 점은 일단 latin1 등의 다른 문자셋으로 설정된 필드에 데이터를 입력한 후 alter 명령을 통해 해당 필드의 문자셋을 euckr로 설정하면 무자비하게 깨진다는 것입니다.
create table test (merong varchar(20) collate latin1_general_ci);
이렇게 만들어진 테이블에 한글 데이터를 넣은 후 필드를 euckr 로 변경하려면 다음처럼 해야 합니다.
alter table test modify merong binary(100);
alter table test modify merong varchar(20) collate euckr_korean_ci;
binary 로 바꾸면 문자셋 특성이 사라지기 때문에 이런 변환과정을 거쳐야 합니다(메뉴얼에 의하면). 그냥 바꾸면 문자들이 손상됩니다.
바이너리 배포판에서 기본적으로 설정된 latin1 은 정렬을 위해 latin1_swedish_ci 을 사용하는데 이 경우 '이' 와 '인'이 같은 문자로 인식되는 식이어서 unique 키를 설정하는데 문제가 발생합니다. 이것은 latin1_bin 등의 collation 을 사용하여 해결할 수 있지만 이렇게 하면 영문자의 대소문자가 구분되어 버립니다.
[출처] 민주가인
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|