【Rails】MySQLテーブルの文字コードを変更する

テーブルの文字コードをutf8mb4に変更するさいに調べていたが既存のテーブルについては新たにmigrationファイルを作って文字コードを変更するSQLを実行するのが必要そうだったが、調べるのに時間かかったのでメモしておく。

$ ./bin/rails g migration change_table_charset

db/migrate/xxxxxxxxxxx_change_table_charset.rb

class ChangeTableCharset < ActiveRecord::Migration[5.1]
  def change
    ActiveRecord::Base.connection.tables.each{|table|
      sql = "ALTER TABLE #{table} CONVERT TO CHARACTER SET utf8mb4"
      ActiveRecord::Base.connection.execute(sql)
    }
  end
end

全テーブルに対して、順次 alter table実行していく。こんなので本当によいのかは不明。けどできた。