MySQL 문자열 설정, 변환
CentOS 4.2 + MySQL 4.1.12는 기본적으로 utf8을 사용합니다. 하지만
mysql>create database foo;
로 DB를 만들면 기본 문자열이 latin1이 됩니다.
따라서 백업을
mysqldump --add-drop-table --complete-insert -p foo > foo.sql
이렇게 하면 복구해보면 잘 안될때가 있습니다
mysqldump --default-character-set=latin1 --add-drop-table --complete-insert -p foo > foo.sql
로 백업하시면
mysql>drop database foo;
mysql>create database foo;
mysql -u root -p foo < foo.sql
로 다시 복구해도 잘 됩니다. 즉 문제는 해결 못했어도
(실제 사용하는것은 latin1이 아닌데 데이터는 latin1로 저장되는 문제)
현상유지와 백업은 잘 됩니다.
그리고 더 중요한 사실! 질답게시판에도 관련 글이 있고
http://bbs.kldp.org/viewtopic.php?t=66235&start=0&postdays=0&postorder=asc&highlight=mysql+%BA%AF%C8%AF
구글검색을 해봐도 latin1 -> utf8변환 관련 여러 글이 있습니다.
하지만! 제가 얻은 결론은 누구는 되도 누구는 안될 수 있다는 겁니다.
어느 소프트웨어가 사용하는 DB인가에 따라
그때그때 다른듯 하다는 거지요.
누구나 강조하듯 따라해보실때는 백업을 해두시고 해보세요.
위에 팁처럼 한다면 현상유지는 할 수 있을것이라고 생각합니다.
(그래도 중요한 데이터라면 다른 컴퓨터나 다른 DB로 해보셔야겠죠; )
이상,
잘 아시는 분들은 '풋~'하실 정도로 간단하면서도
모르는 분들은 삽질할 수도 있고, 엄청난 사태로도 일을 키울 수 있는 사항에 관한
글이었습니다 :oops:
덧글.
MySQL레퍼런스나 MySQL소개글 중 구글상위랭커중
일부라도 친절하게
mysql>create database foo; 하시지 마시고 mysql>create database foo default character set utf8; 하셔야 utf8 DB가 만들어집니다
라고 써줬다면 좋았을텐데, 아쉽네요[/code]
버그라구요?
mysql 4.1 들어 collate란 개념이 생기면서 4.0까지 습관대로 쓰던 사람들이 사용자 불량을 낸 거잖아요? 기본으로 들어가는 게 latin1일 뿐이죠.
정확히는..기본으로 생성되는 char set도 지정할 수 있습니다. 다만
정확히는..기본으로 생성되는 char set도 지정할 수 있습니다. 다만 그게 대개 latin1로 설정되어서 배포되는 것이죠.
의아하군요. 저 같은 경우 (gentoo) 기본으로 utf8으로 생성되던데 :)
혹시 4.0에서 4.1로 업그레이드하셨나요? (데비안이라던가.. 다른 패키지로 있지만 설정 그대로 가져갔다던가..)
[quote=":)"]정확히는..기본으로 생성되는 char set도 지정
아뇨, 이번이 처음이고요 CentOS 4.2에 깔리는 MySQL 4.1.12를 사용했습니다.
CentOS 4.2도 utf8을 기본으로 쓴다고 되어있는데 이상해요.
아무래도 그냥 latin1로 써야할것 같아요 :cry:
지금 당장에는 별 문제가 없습니다.
문제는 언젠가는 5.0으로 가야할텐데, 잘못될까봐 두렵다는겁니다.
언젠가는 완전한 utf8이 되도록 고쳐야 안전할것 같은데 큰일이에요
문제는 이겁니다.
mysql>create database foo;
mysql>show variables like 'c%';
하면
mysql>create database foo default character set utf8;
mysql>show variables like 'c%';
라고 하면
mysql>create database foo default character set utf8 collate utf8_general_ci;
mysql>show variables like 'c%';
라고 해도
왜 latin1이 있는건지!!! :evil:
에휴. 페도라 코어5은 mysql 5.0이 기본이더라고요.
코어5 나오면 다시 이것저것 해볼까 합니다.
하다가 귀찮아서 SRPM 수정해서 사용하고 있습니다. -_-;
하다가 귀찮아서 SRPM 수정해서 사용하고 있습니다. -_-;
인터페이스 관련 latin1은 db생성과는 상관없지 않을까요?[c
인터페이스 관련 latin1은 db생성과는 상관없지 않을까요?
set charset utf8l
하면 인터페이스 charset이 utf8로 바뀝니다.
server에서 내부적으로 사용하는 charset은 db의 charset과는 상관없는 걸로 알고 있습니다. 설정파일을 편집하세요~
default charset 값이 기본이 latin1으로 되어있고 그 녀
default charset 값이 기본이 latin1으로 되어있고 그 녀석을 그냥 euckr로 바꿔서 쓰는 중입니다. -_-;(mysql은 기존 DB와의 호환이 가장 문제라서;; 신규 시스템이라면 뭘로 되어있든 상관이 없겠지만 migration이라면 얘기가 달라지거든요.)
/*다른분이 사용하는
/*다른분이 사용하는 문구를 따서 왔습니다*/
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
/*다른분이 사용하는 문구를 따서 왔습니다*/
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기