LoginSignup
0
0

migrateしたときにNOT NULLエラーがでた、、migrateするときの注意

Last updated at Posted at 2023-05-28

"contacts"テーブルの中に"name"columnを作成した。
ここまでは順調に進んだが、null: falseにしていたため、新しいcolumnを追加するときに下記のエラーが発生してしまった。

ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL constraint failed: contacts.email

新しいcolumnを追加した流れ

・columnを追加するコマンド

rails g migration AddEmailToContacts email:string

・作成されたファイル
(contactsテーブルにemailのcolumnを追加して、stringは文字列としての指定)

class AddEmailToContacts < ActiveRecord::Migration[7.0]
  def change
    add_column :contacts, :email, :string
  end
end

・作成されたファイルにnull:falseとdefalutを追加
null:falseは空であることを許さない、default""は、migrateしたときに空の状態ではないとするために追加した。

class AddEmailToContacts < ActiveRecord::Migration[7.0]
  def change
    add_column :contacts, :email, :string, null: false, default: ""
  end
end

これで解決!!!

注意しなければいけないと思った点は、
・rails db:migrateを一度したら、なるべくmigrateファイルはいじらない。
・rails db:rollbackでmigrateする前に戻って、ファイルを編集して、もう一度migrateする。
・schema.rbで確認するか、rails db:versioで現在の位置を確認しながら慎重に行う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0