APMSETUP7 'MySQL'에서 한글깨짐을 처리하기 위한 캐릭터셋 설정 - 회복맨 블로그


   APMSETUP7 'MySQL'에서 한글깨짐을 처리하기 위한 캐릭터셋 설정


기본값이 latin1로 되어있다. 


별다른 설정없이 기본 테이블 인코딩을 이대로 쓰면 값을 넣고 뺄 때, 속성(인코딩) 명령어를 일일이 DB나 Table에 


적용해줘야 하기 때문에 매우 번거롭다. 따라서 mysql의 인코딩을 설정은 어떤 의미로는 필수적인 단계이다.


* 참고로 기본값으로 쓰면 다음과 같이 지정해주면 된다. ( ALTER 쿼리 자체가 참 귀찮고 좀 그렇다... )


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. 정확히 "[항목의]" 다음의 문자열을 추가한다.


[client]

default-character-set=utf8


[mysqld]

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]

default-character-set=utf8



3. 저장이 되었으면 현재 my.ini파일을 복사하여 APM_setup\Server\MYSQL5에 붙여넣기 한다.


그러면 


C:\APM_setup\Server\MYSQL5\data 폴더에 my.ini 한개 존재


C:\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 like 'c%';   명령어를 치면 아래와 같이 전부 utf8로 잘 변경되어져있다.





   이후 데이터 값의 확인은 phpMyAdmin 에서


http://localhost/myadmin/index.php 에 접속하면 아래 처럼 SQL 관리 도구가 뜬다.


역시 비번과 이이디는 root / apmsetup 으로 동일하다.


앞으로의 데이터베이스 열람은 cmd에서 명령기반의 모니터링이 아니라 phpMyAdmin으로 확인하는것이 정신에 매우 이로울것이다.




ps. 캐릭터셋 때문에 하도 고생을 해서 10번 이상의 임상실험을 통해 계속해서 반복적으로 성공한 구성을 튜토리얼로 기록 남겨둔다.

   

       2~3시간 삽질한 것 같은데 "euc-kr / utf-8" 도 아니고 하필 latin1 이라니... 이래저래 다른 유저들도 참 많이 고생 할 듯.





( 2015.02.02 내용추가 )


   그러나 반전이 있다.


phpMyAdmin 3.2.3 버전, MySQL 5.1.41에서는 MySQL 문자셋 변경 접근 자체가 안된다.




phpMyAdmin 2.6.1 버전의 MySQL 5.1.61버전에는 친절하게 셀렉트 박스로 변경할 수 있다.


(어떤 버전을 패치해야 아래와 같이 변경되는지는 나중에 포스팅 하겠다.)




댓글 0