この記事の続き.SQLite → MySQL のデータ形式変換の話はこっちに書いている.
おととい詰まっていたのは,絵文字を含む 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 などを噛ませるんだろうなあ…….