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]

Forums: 
keizie의 이미지

mysql 4.1 들어 collate란 개념이 생기면서 4.0까지 습관대로 쓰던 사람들이 사용자 불량을 낸 거잖아요? 기본으로 들어가는 게 latin1일 뿐이죠.

익명 사용자의 이미지

정확히는..기본으로 생성되는 char set도 지정할 수 있습니다. 다만 그게 대개 latin1로 설정되어서 배포되는 것이죠.

의아하군요. 저 같은 경우 (gentoo) 기본으로 utf8으로 생성되던데 :)

혹시 4.0에서 4.1로 업그레이드하셨나요? (데비안이라던가.. 다른 패키지로 있지만 설정 그대로 가져갔다던가..)

아르아의 이미지

:) wrote:
정확히는..기본으로 생성되는 char set도 지정할 수 있습니다. 다만 그게 대개 latin1로 설정되어서 배포되는 것이죠.

의아하군요. 저 같은 경우 (gentoo) 기본으로 utf8으로 생성되던데 :)

혹시 4.0에서 4.1로 업그레이드하셨나요? (데비안이라던가.. 다른 패키지로 있지만 설정 그대로 가져갔다던가..)

아뇨, 이번이 처음이고요 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%';
하면

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | latin1_swedish_ci          |
| collation_database       | latin1_swedish_ci          |
| collation_server         | latin1_swedish_ci          |
| concurrent_insert        | ON                         |
| connect_timeout          | 5                          |
+--------------------------+----------------------------+

mysql>create database foo default character set utf8;
mysql>show variables like 'c%';
라고 하면

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | latin1_swedish_ci          |
| collation_database       | utf8_general_ci            |
| collation_server         | latin1_swedish_ci          |
| concurrent_insert        | ON                         |
| connect_timeout          | 5                          |
+--------------------------+----------------------------+

mysql>create database foo default character set utf8 collate utf8_general_ci;
mysql>show variables like 'c%';
라고 해도

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | latin1_swedish_ci          |
| collation_database       | utf8_general_ci            |
| collation_server         | latin1_swedish_ci          |
| concurrent_insert        | ON                         |
| connect_timeout          | 5                          |
+--------------------------+----------------------------+

왜 latin1이 있는건지!!! :evil:
에휴. 페도라 코어5은 mysql 5.0이 기본이더라고요.
코어5 나오면 다시 이것저것 해볼까 합니다.

ydhoney의 이미지

하다가 귀찮아서 SRPM 수정해서 사용하고 있습니다. -_-;

lacovnk의 이미지

인터페이스 관련 latin1은 db생성과는 상관없지 않을까요?

set charset utf8l

하면 인터페이스 charset이 utf8로 바뀝니다.

server에서 내부적으로 사용하는 charset은 db의 charset과는 상관없는 걸로 알고 있습니다. 설정파일을 편집하세요~

ydhoney의 이미지

default charset 값이 기본이 latin1으로 되어있고 그 녀석을 그냥 euckr로 바꿔서 쓰는 중입니다. -_-;(mysql은 기존 DB와의 호환이 가장 문제라서;; 신규 시스템이라면 뭘로 되어있든 상관이 없겠지만 migration이라면 얘기가 달라지거든요.)

bjeongh1의 이미지

/*다른분이 사용하는 문구를 따서 왔습니다*/
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

/*다른분이 사용하는 문구를 따서 왔습니다*/
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.