文字コード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

ワードプレスで特定のテーブルをダンプ、リストア

NO IMAGE

TCPコネクション数を簡単に調べる

NO IMAGE

php8系のインストール CentOS7

NO IMAGE

文字コードを無理矢理UTF8のhtaccess

NO IMAGE

NICを調べる

NO IMAGE

CentOS6におけるSSHでno hostkey alg出現時の対応