null falseなカラムをadd_columnする
すでに作成済みのテーブルにアタタにnot falseなカラムを追加しようとして以下のようにmigrationを行おうとするとエラーが起こる
class AddMaidnumberToMaids < ActiveRecord::Migration def change add_column :maids, :maidnumber, :string, {null: false} end end
Cannot add a NOT NULL column with default value NULL: ALTER TABLE "maids" ADD "maidnumber"
そのため一度nullを許容するカラムを追加し,その後にnull falseを設定するという方法を取った.
このとき変更するテーブルにデータが存在していると
SQLite3::ConstraintException: maids.maidnumber may not be NULL: INSERT INTO "maids" (中略) ActiveRecord::StatementInvalid: SQLite3::ConstraintException: maids.maidnumber may not be NULL:
のようなエラーが起こったため,一旦全てのレコードは削除した.その後に以下のようにmigrationファイルを修正しmigrationを行った
class AddMaidnumberToMaids < ActiveRecord::Migration def up add_column :maids, :maidnumber, :string change_column :maids, :maidnumber, :string, {null: false} end def down remove_column :maids, :maidnumber end end
参考URL
[Ruby on Rails][SQLite3] SQLException: Cannot add a NOT NULL column with default value NULL