심히 걱정된다 - 2008/05/15 11:24
-. mysql 4.1.X 이상에서 기본언어가 한글로 설정되지 않았을때의 설정 변경 방법.

# my.cnf 는 서버에 따라 위치가 다를 수 있으므로 확인요망.
# init_connect, skip-character-set-client-handshake 옵션은 MySQL 버젼에 따라 한가지만 사용하면 됨.
# 주의) 이 옵션은 [mysqld] 영역에 들어가야 하며 다른 곳에 들어가면 에러가 발생함.
vi /etc/my.cnf
[mysqld]
default-character-set=euckr

### mysql 4.1.2 (28 May 2004) 이상에서만 동작함. PHP에서 "set names euckr"쿼리를 줄 필요가 없어짐.
init_connect='set names euckr'

### mysql 4.1.15 이상에서만 동작함. PHP에서 "set names euckr"쿼리를 줄 필요가 없어짐.
#skip-character-set-client-handshake=1

[client]
default-character-set=euckr

[mysqldump]
default-character-set=euckr

# MySQL 재시작
/etc/init.d/mysqld restart

# MySQL 서버에 연결후 설정이 한글로 뜨는지 확인한다.
mysql> show variables like '%char%';
+--------------------------+--------------------+
| 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 | /usr/share/mysql/korean |
+--------------------------+--------------------+
7 rows in set (0.00 sec)

# PHP 에서도 간단한 스크립트를 만들어 위 설정과 동일한지 확인한다.

-. 일부 배포판(CentOS 특정버젼)의 RPM 버젼에서 init_connect, skip-character-set-client-handshake 옵션이 적용되지 않는 문제.
: 아래 제로보드의 경우처럼 PHP의 mysql_connect() 다음에 "set names ..."쿼리를 실행시키면 해결 됩니다.
zboard/lib.php
272 function dbconn() {
~
287 // [2005-07-08] MySQL 4.1 charset
288 mysql_query("set names euckr") or error(mysql_error);
289
290 return $connect;
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
TAG ,