티스토리 뷰
SQL 캐릭터셋 설정의 이유
그냥 기본값으로 (latin1로 되어있음) 쓸수도 있지만 속성 명령어를 일일이 DB, Table에 적용해줘야 하기 때문에 어떤 의미로는
필수적인 단계이다.
* 참고로 기본값으로 쓰면 다음과 같이 지정해주면 된다.
ALTER DATABASE 데이타베이스_이름 CHARACTER SET utf8 COLLATE utf8_general_ci; //DB
ALTER TABLE 테이블_이름 CHARACTER SET utf8 COLLATE utf8_general_ci; //TABLE
(혹은 DB를 만들면서 지정)
CREATE DATABASE 데이타베이스_이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
나의 SQL 캐릭터셋 리스트 보기
윈도우키 + R 을 누른뒤 > cmd 를 입력하여 도스 커맨드 창을 뛰운다.
기본 비번은 root / apmsetup 이니 알아두도록 하고 다음과 같이 mysql에 접속한다.
C:\> mysql -uroot -papmsetup
mysql> show variables like 'c%'; 를 입력하면 현재 적용되어있는 캐릭터셋이 아래와 같이 리스트로 뜬다.
살펴보면 캐릭터셋의 설정이 모두 latin1 로 되어있다.
문제점1) phpAdmin같은 편리한 관리 도구로 테이블에 입력된 값을 살펴 볼 경우 한글이 죄다 ????으로 떠서 확인이 불가.
문제점2) 게다가 php로 select로 결과값을 받을때에도 @mysql_query('set names utf8')', 일일이 iconv() 메서드로 계속 인코딩을
관리해서 입/출력 해야한다.
문제점3) 위에 설명했듯이 ALTER로 속성을 바꿀수는 있지만... 이미 캐릭터가 입력되어서 서로 다른 타입이 테이블에 혼재할경우
이래저래 엄청 일이 꼬이게 된다.
my.ini 파일 수정
1. C:\APM_Setup\Server\MySQL5\data 에서 my.ini 파일을 편집기로 오픈한다.
이렇게 생긴 파일 맞다)
2. 정확히 아래 3개의 "[항목의]" 에서 다음의 문자열을 추가한다.
# The following options will be passed to all MySQL clients
[client]
default-character-set=utf8
port = 3306
# The MySQL server
[mysqld]
port = 3306
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
skip-innodb
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
[mysql]
no-auto-rehash
default-character-set=utf8
3. 저장이 되었으면 현재 my.ini파일을 복사하여 APM_setup\Server\MYSQL에 붙여넣기 한다.
그러면
APM_setup\Server\MYSQL5\data 폴더에 my.ini 한개 존재
APM_setup\Server\MYSQL5 폴더에 my.ini 한개 존재
총 두개의 my.ini가 존재 할 것이다.
data 하위에 my.ini가 없으면 APMSETUP모니터가 작동하지 않기때문에 이렇게 조치 하는것이다.
4. 수정이 끝났으면 mysql을 재시작 해야 하는데
ㄱ. APM프로그램에서 stop을 누른뒤 다시 Start를 누르거나 (추천)
ㄴ. mysql> quit;
c:\>mysqladmin -uroot -papmsetup reload 라는 커맨드로 입력해도 된다.
캐릭터셋 변경 확인
수정이 잘 되었는지 반드시 확인해야 한다.
열려있던 도스콘솔창을 닫고, 다시 실행한다.
C:\> mysql -uroot -papmsetup mysql에 로그인한 뒤
mysql> show variables link 'c%'; 명령어를 치면 아래와 같이 전부 utf8로 잘 변경되어져있다.
이후 데이터 값의 확인은 phpMyAdmin 에서
http://localhost/myadmin/index.php 에 접속하면 아래 처럼 SQL 관리 도구가 뜬다.
역시 비번과 이이디는 root / apmsetup 으로 동일하다.
앞으로의 데이터베이스 열람은 cmd에서 명령기반(아마도 select)의 모니터링이 아니라 phpMyAdmin으로 확인할 것이다.
* 참고로 phpMyAdmin의 세션 만료시간이 1440초(24분)으로 되어있기 때문에 매우 불편하다. 이것을 10시간으로 바꿔 놓는 작업을
여기( http://serpiko.tistory.com/558 )에서 확인할 수 있다.
ps. 캐릭터셋 때문에 하도 고생을 해서 10번 이상의 임상실험을 통해 계속해서 반복적으로 성공한 구성을 튜토리얼로 기록 남겨둔다.
2~3시간 삽질한 것 같은데 "euc-kr / utf-8" 도 아니고 하필 latin1 이라니... 이래저래 다른 유저들도 참 많이 고생할듯.
'■ 백엔드 ■ > PHP' 카테고리의 다른 글
5. 학생기록부 프로그램 - 테이블로 몸풀기 (0) | 2014.02.13 |
---|---|
4. 데이터 베이스 만들기 (0) | 2014.02.12 |
2. 개발 툴 설치 (0) | 2014.02.12 |
1. APM 설치 (0) | 2014.02.11 |
php-excel-reader 적용하기 (0) | 2014.02.04 |