2014년 12월 23일 화요일

MySQL 4.1.12에서의 Illegal mix of collations Error

(네이버블로그에서 옮겨옴)

[SQL] MySQL 4.1.12에서의 Illegal mix of collations Error

2006/02/07 13:31 http://blog.naver.com/jujac/20021380449

MySQL 4.1.12 상에서 EUC-KR과 UTF-8을 동시에 써야하는 문제가 발생했다.
기존 버전은 EUC-KR기반이었고.. 신 버전은 다국어지원 문제로 UTF-8을 사용하였기에
업그레이드를 위해 기존 버전과 신버전이 동시에 공존하여야 하는 문제가 발생한 것..
DB나 Table이야 각각의 charset에 맞게 설정하면 그만이지만..
Connection은 일단 UTF-8이나 EUC-KR 둘 중에 하나를 선택하여야 한다.

1. 일단, 기존버전을 유지한 상태에서 DB를 copy떠서 charset만 변경시켰다.
  원본DB: db_1 → 사본DB: db_2

2. 그리고.. 신버전의 UTF-8의 사용을 위해 DB연결을 시도하였더니 다음과 같은 에러 발견.
  Illegal mix of collations (euckr_korean_ci, IMPLICIT) and
  (latin1_swedish_ci, COERCIBLE) ...

3. 따라서 Connection을 일치 시켜야만 했다.
그런이유로.. 다음과 같은 파일을 작성하여 include하였다.

<?
$query = 'set session character_set_connection=utf8;';
mysql_query($query) or die("[#".__LINE__."]".mysql_error());
$query = 'set session character_set_client=utf8;';
mysql_query($query) or die("[#".__LINE__."]".mysql_error());
$query = 'set session character_set_results=utf8;';
mysql_query($query) or die("[#".__LINE__."]".mysql_error());
$query = 'set collation_connection=utf8_unicode_ci;';
mysql_query($query) or die("[#".__LINE__."]".mysql_error());
?>

4. 이후 작성되는 모든 mysql관련 명령어는 UTF-8 의 적용을 받는다.


덧글
멋진녀석 2008/09/10 14:24
감사합니다 담아갈께요
미개 2008/09/25 13:17
담아갈께요.
포데스 2010/03/08 17:35
감사. 담아가요.
개구장이 2011/01/19 18:38
감사합니다~
arkim04233 2011/08/03 15:52
감사합ㄴㅣ다

댓글 없음:

댓글 쓰기