文字コードlatin1のデータベース、テーブルをUTF8に変換し移転する

MySQL5.0などの古いエンジンで作成されたlatin1文字コードが入ってるDBをMariaDB 10系に移転した際のメモ

今回は旧サーバ>新サーバへの移設。環境はCentOS5>CentOS7となっています。

latin1とは懐かしい!と思う方もいらっしゃるでしょうが、まさか未だにそんなサーバを管理しているケースが意外とあるものですw

さて、ここでは該当DB名をdb_xxxとします。

手順的な結論

  1. 新サーバのMariaDB(MySQL)で、db_xxxを作成
  2. 旧サーバ>新サーバへデータコピー。/var/lib/mysql/db_xxxをまるごとrsync
  3. 新サーバでdb_xxxをダンプ。db_xxx.sqlとします。default-characterの指定は不要
  4. 新サーバのMariaDBでdb_xxxを削除し、新規でdb_xxxを再作成。文字コード指定不要
  5. ダンプしたdb_xxx.sqlをDLしてサクラエディタで開き、Latin1形式のdb_xxx2.sqlとして保存。Latin1対応エディタなら何でも良い
  6. 再びサクラエディタで、db_xxx2.sqlを開くが、この際utf8形式にする。再読み込みでもよい
  7. Latin1の文字列があればutf8に置換し、utf8形式で保存。
  8. リストア。ここはcharasetを指定。 mysql -uroot -p --default-character-set=utf8 db_xxx <  db_xxx2.sql

ALTER TABLEやnkfなど色々やってみましたが、
私の場合、リストア時に文字コードを指定しても
ERROR at line 604: Unknown command '\"'.
を解消できなかったので、こちらで解決させました。

一番楽な手順が最後になるとは....w

サクラエディタさま、心からありがとうございました!

 COMMENT

メールアドレスが公開されることはありません。

関連記事

NO IMAGE

apacheアパッチが異常終了し、httpdを終了できない対処CentOS 6o...

NO IMAGE

EWWWを使わずに画像圧縮をしたい!

NO IMAGE

特定の拡張子以外のファイルがあるかどうかを検索

NO IMAGE

nginxでhtmlファイルをphpとして動作させてみる

gccのバージョンアップグレード(CentOS7)

NO IMAGE

nicのeth*が認識できなくなった場合の対処