강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

4.1 버전의 collation
작성자 : M 최고의하루
등록날짜 : 2008.12.23 09:56
2,430

mysql이 4.1로 업그레이드 되면서 서브쿼리가 지원되게 되어

아마도 많은 사람들이 개발시점에서 한 번쯤은 mysql4.1을 사용할지

고민했으리라 생각합니다.

그러나 아직 제대로된 버전이 아닌관계로 버젓한 메뉴얼이 없어

변화된 localization셋팅때문에 많은 분들이 고생했을 것이라 예상합니다.

 

mysql4.1에서는 4.0에서처럼 default character set하나만 바꿔주면 끝나질

않습니다. 서버/데이터베이스/테이블/connection/ 심지어 필드

하나하나, 스트링 하나하나까지도 character set과 collation을 설정할 수

있게 되었습니다. 그래서 4.0에서 서비스하던 사이트를 4.1로

데이터를 옮기는 과정에서 한글이 깨지는 현상이 발생합니다.

 

쉽게 말씀드리면 4단계에 걸쳐서 각각 character set과 collation을

변경해주시면 됩니다. 우선 데이터베이스를 다음과 같이 새로 생성합니다.

 

>> create database DB_NAME character set euckr collation euckr_korean_ci

 

그리고 4.0의 데이터를 스크립트로 복사한 다음 각각의 테이블 끝에

붙어있는 character set을 euc-kr 이나 latin1에서 euckr로 변경해줍니다.

(4.1에서 한글의 character set이름이 euc-kr에서 euckr로 변경되었습니다.)

 

그런 다음 mysql 을 --default-character-set=euckr --default-collation=euckr_korean_ci 의 옵션을 주어 실행시키면서 자료를 덤프받습니다.

 

>> mysql -uroot -p --default-character-set=euckr --default-collation=euckr_korean_ci < DB_SCRIPT.SQL 

(DB_SCRIPT.SQL파일은 4.0에서 받은 데이터 스크립트파일이겠죠.)

 

그렇게 하면 일단 데이터베이스 어필리케이션(예를 들면 SQLyog같은 프로그램)에서는 정상적으로 데이터를 볼 수 있을 것입니다.

하지만 JDBC를 사용해서 접속하는 경우 connection characterset을  따로

설정해주지 않으면 한글이 깨질 것입니다.

저같은 경우 어플리케이션에서 connection을 얻어오는 즉시

해당 connection을 이용하여 "SET CHARACTER SET euckr"이란

SQL명령을 executeUpdate 시켰서 해결했습니다만 아마도 더 깔끔한

방법이 있을 줄 압니다.

 

그렇게 하면 mysql4.1.1알파에서도 한글을 문제없이 사용할 수 있습니다.

참고로 그냥 latin1으로 설정한 상태에서도 한글이 사용이 가능하긴 합니다만 order by나 일부 한글로의 검색시에 제대로 검색이 안되는 경우가 발생합니다. 그런 경우 해당 필드만 character set을 설정해서 사용할 수도 있습니다. 예를 들면 latin1으로 저장된 한글을 euckr의 코드셋 순서로 정렬하고 싶을 때 다음과 같이 하면 됩니다.

 

>> SELECT * FROM table_name ORDER BY k COLLATE euckr_korean_ci

 

그러면 한글 순서로 정렬이 됩니다.

이 말은 만약 이제까지 latin1으로 잘 써오신 분이라면 정렬을 위해서만 추가적으로 코드를 추가해줄 경우 문제없이 잘 정렬이 됨을 의미하는 것이니 데이터베이스를 통째로 수정할 필요가 없겠지요.

 

저도 초보라 고생끝에 알아낸 팁입니다. 유용하게 참고하셨으면 좋겠습니다.

(출처 : '자바에서 mysql DB에 기록할때 한글이 깨져요' - 네이버 지식iN)

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2745 SSH 설명 13 김영철 01.29 2795
2744 간단한 쉘 명령어 13 김영철 01.29 2226
2743 ssh 명령어 13 김영철 01.29 2401
2742 my-sql 테이블 생성 방법 13 김영철 01.29 3076
2741 mysql 백업 및 복원 방법 13 김영철 01.24 2712
2740 sql_덤프하기_7_10_08 99 단국강토 01.12 1874
2739 Date Types_7_7_08 99 단국강토 01.12 3542
2738 13.1.7.1. JOIN Syntax____SELECT 99 단국강토 01.08 2210
2737 SUBSTRING(str,pos) , SUBSTRING(str FROM pos) , SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len) 99 단국강토 01.08 2900
2736 mysql함수 [숫자열, 문자열, 집계, 날짜, 기타함수...] 99 단국강토 01.07 4736
2735 sql ERROR 1045 99 단국강토 01.07 2568
2734 정규패턴, 자료백업 및 복구, MySQL 설정하기 99 단국강토 01.06 2697
2733 MySQL 시스템 데이터베이스 및 테이블 구조 이해하기 99 단국강토 01.06 2381
2732 TABLE 깨지고 맛간것 복구하기 99 단국강토 01.05 2332
2731 mysql의 최대 성능 향상 방법 99 단국강토 01.05 3563
2730 mysql FULLTEXT 검색 M 최고의하루 01.03 2832
2729 동적 쿼리 사용시 속도개선문제점 해결을 위한 방안... M 최고의하루 01.03 2486
2728 MySQL - Explain 정보보는법 99 단국강토 01.02 2439
2727 해당 문자의 Index 값알아 보자 99 단국강토 01.02 2282
2726 [SQL 쿼리문] 게시판에서 글쓰기와 답글을 저장할때 99 단국강토 12.30 2938
2725 EXPLAIN [mysql] 99 단국강토 12.30 2290
2724 unsigned M 최고의하루 12.26 2429
2723 우편번호 데이터 M 최고의하루 12.26 2786
2722 Mysql 문자셋 M 최고의하루 12.24 2383
2721 mysql 에서 utf-8 로 생성하기 M 최고의하루 12.24 2681
2720 utf-8 세팅및 한글깨짐방지 M 최고의하루 12.23 4615
열람중 4.1 버전의 collation M 최고의하루 12.23 2431
2718 mysqladmin정리 M 최고의하루 12.20 2178
2717 카테고리4단 inner join 이해하기 M 최고의하루 12.20 2543
2716 MySQL-Front 3.2 설치 M 최고의하루 12.19 3230
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취