언어코드가 다른 Mysql간에서의 백업과 복구

zz181321의 이미지

mysqldump를 이용해서 게시판을 백업했습니다.

여기서 문제는, 백업한 mysql은 latin1을 사용하고 있었고,

새로 복구할 mysql에서는 uft-8을 사용하고 있었습니다.

이랬더니, 한글이 죄다 깨지더군요.

mysqldump를 사용하지 않고 그냥 db파일을 그대로 붙여넣으면 어떤건 깨지고, 어떤건 멀쩡합니다만,

공통적으로 한글이 제대로 입력되지 않습니다.

어떻게 한글이 안깨지게 변환 할 수 없을까요?

1day1의 이미지


alter table {table_name} convert to character set utf8

로 바꿔보시기 바랍니다.

F/OSS 가 함께하길.. (F/OSS서포터즈 : [[FOSS/Supporters]], [[FOSS/Supporters/Group]]) - 블로그 활성화 프로젝트 : 하루에 하나씩 블로그 글 남기기 -

F/OSS 가 함께하길..

zz181321의 이미지

쨩처짹?? 쩔쨉쩔첩???? ??짚쩌철

이게 하기 전..

쨩처짹?? 쩔쨉쩔첩???? ??짚쩌철

실행 후 입니다.

Query OK, 12 rows affected (0.01 sec)
Records: 12 Duplicates: 0 Warnings: 0

이런식으로 성공적으로 적용은 된 거 같습니다만..

변화가 없어버리네요 ;

1day1의 이미지

mysql 의 버전상황이 어떻게 되나요?
참고할 만한 문서입니다 - http://annyung.oops.org/?m=white&p=mysql41

F/OSS 가 함께하길.. (F/OSS서포터즈 : [[FOSS/Supporters]], [[FOSS/Supporters/Group]]) - 블로그 활성화 프로젝트 : 하루에 하나씩 블로그 글 남기기 -

F/OSS 가 함께하길..

zz181321의 이미지

이전 mysql은 4.1.14고, 이동할 mysql 버젼은 4.1.21입니다.

젠투를 쓰고 있고요.

몇번을 해봐도 안 되네요 음...

덤프를 불러들여도, 그냥 db파일을 가져와서 붙여도 변환은 실패로 끝나네요.

LC_CTYPE=ko_KR.euckr

로 설정 해 놨는데, 이것과 뭔 관계가 있을까요?

dormael의 이미지

제 생각엔 덤프하실때 인코딩을 현재 터미널상의 인코딩으로 mysqldump 옵션에서 주시고 덤프하시는게 우선 가장 중요할 것 같습니다.

해보질 않아서 정확히는 모르겠지만 만일 환경변수에서 LANG이 eucKR이라면 dump시에도 euckr로 덤프를 하셔야 할듯 합니다.
아니면 latin1이 될수도 있구요.
테이블이나 데이터베이스의 인코딩에 따라서요.

그리고 덤프된 텍스트 파일의 한글이 깨져 보이지 않는 상황에서 utf8, euckr 등으로 인서트 해보셔야 할것 같습니다.

데이터가 많다면 우선 적은 데이터의 테이블 하나만 테스트 해보시고 잘 된다면 전체로 해보시면 될것 같습니다.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

송효진의 이미지

이전DB : latin1 (실제 euckr)
dump 시 latin1 으로 dump : 이때 덤프된 데이터를 euckr 코드로 볼 수 있어야 겠지요.

이후DB : utf8
가장 간단한 방법!!
dump 된 파일 제일 처음에 SET NAMES euckr 을 적어놓고
cat dump.sql | mysql -p 하세요.
mysql 테이블은 호환이 안되니 덤프 내용에서 삭제하시고,
grant 명령으로 직접 하셔야 합니다.

emerge money

송효진의 이미지

지금 확인해 보니 4.1 버전에서 dump 를 하면,
각 테이블 마다 ENGINE=InnoDB DEFAULT CHARSET=euckr; 이 붙는군요.
:%s/DEFAULT CHARSET=latin1;/DEFAULT CHARSET=utf8;/g 를 하셔야 겠습니다.

이렇게 하면,
SET NAMES euckr; 로 현재 클라이언트가 euckr 이라는 것을 알려주고,
DEFAULT CHARSET=utf8 로 테이블은 utf8 이라는 것을 알려주므로,
MySQL 이 자동으로 utf8 로 변환하여 넣어줄겁니다.

그리고 MySQL 5.0 을 권합니다.

emerge money

zz181321의 이미지

일단, --default-character-set=latin1 옵션을 줘서 덤프를떴습니다.

/*!40101 SET NAMES latin1 */;

여기를 /*!40101 SET NAMES euckr */;

그리고 ENGINE=MyISAM DEFAULT CHARSET=latin1;

를 DEFAULT CHARSET=utf8; 로 고쳤습니다.

그후 dump 했더니 ERROR 1062 (23000) at line 61: Duplicate entry '??' for key 1

라는 에러가... 아마도 한글이 깨져서 안 읽어지나 봅니다.

그래서 이번엔 --default-character-set=euckr 옵션을 줘서 덤프를떴습니다.

여전히 ENGINE=MyISAM DEFAULT CHARSET=latin1; 더군요.

같은 방식으로 넣어 줬더니 에러 엇이 들어가긴 했습니다만, 여전히 깨져보이더군요.

mysql은 5.0으로 새로 설치했습니다

lacovnk의 이미지

일단 위에서 말씀해주신 것 처럼 latin1로 지정해서 덤프를 받은 뒤, 받은 파일이 euckr로 잘 읽히는지 확인해보세요~ :)

송효진의 이미지

SET NAMES 는 주석 없이 쓰세요.
주석에 있는 내용은 원래 그러하다는 참조 정도의 역할일 겁니다. (아마도...)

emerge money

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.