Rails の MySQL で Incorrect string value というエラーが出たとき

結論

文字コードの設定を見直す*1

Rails では

たとえば utf8mb4 の場合には、config/database.yml に明示的に encoding: utf8mb4 と書きましょう。

development:
  adapter: mysql2
  host: YOUR_HOST
  encoding: utf8mb4
  username: YOUR_USERNAME
  password: YOUR_PASSWORD
  database: YOUR_DATABASE

さらに charsetcollation も指定しておくとよいです。

*1:そして Rails はあまり関係ない

Rails (Active Record) で 外部制約(外部キー)を削除する

結論

remove_foreign_key を使えばいいです。

実例

class FooBarMigration< ActiveRecord::Migration[5.2]
  def change
    remove_foreign_key :users, :jobs
  end
end

余談

ググったら外部制約のカラムそのものを削除する方法が多くヒットして大変でした*1

*1:そしてそのカラム削除にみんな苦労していた……

Ridgepole を用いて データベース の スキーマ を Git で管理する

Ridgepole

こちらです。

データベースの構造の履歴を取る

Ridgepole はマイグレーションツールとしての側面が強いですが、データベースのスキーマを取得するツールとしても便利です。

実行時のオプションに --export をつけるだけで指定したデータベースのスキーマを瞬時に書き出してくれます。

この機能を用いて、データベースのスキーマの履歴を取得しようとしました。

続きを読む
Powered by はてなブログ