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

Rocky Linuxでのpppoe設定

NO IMAGE

bc.googleusercontent.comのブロック対応について

NO IMAGE

zabbix をapacheからnginx に変更した際の注意

NO IMAGE

mysqlで現在の接続数を確認する

NO IMAGE

ddo IP更新ツール

NO IMAGE

Unknown collation: ‘utf8mb4_unicode_520_...