私が歌川です

@utgwkk が書いている

SQLite3 から MySQL にデータを移行した

utgwkk.hateblo.jp

この記事の続き.SQLiteMySQLデータ形式変換の話はこっちに書いている.

おととい詰まっていたのは,絵文字を含む VARCHAR を INSERT するときにエラーが出る,というところで,これは結局設定ファイルに付け加えることで解決した.

/etc/mysql/conf.d/ 以下にこう書いた設定ファイルを置く.

[mysqld]
character-set-server = utf8mb4

[client]
default-character-set = utf8mb4

こうすることによって mysqld と mysql コマンドで utf8mb4 を使うようになる.

あとはライブラリを入れ替えたり微妙にSQLを書き換えたりすれば動くようになるが,クライアント側で encoding を utf8mb4 に設定する必要があるので,忘れないようにする.

たとえば Ruby (mysql2) ならこんな感じ.

db = Mysql2::Client.new(
  :host => DB_PATH,
  :username => DB_USERNAME,
  :password => DB_PASSWORD,
  :database => DB_NAME,
  :encoding => 'utf8mb4' # これ
)

こうしてデータもアプリケーションも無事に MySQL に全面移行できたが,このあたりはふつうは ActiveRecord などを噛ませるんだろうなあ…….