Я получаю следующую ошибку при попытке добавить столбец NOT NULL к существующей таблице. Почему это происходит?. Я попробовал грабли db:reset думающий, что существующие записи являются проблемой, но даже после сброса DB, проблема сохраняется. Можно ли помочь мне понять это.
Файл миграции
class AddDivisionIdToProfile < ActiveRecord::Migration
def self.up
add_column :profiles, :division_id, :integer, :null => false
end
def self.down
remove_column :profiles, :division_id
end
end
Сообщение об ошибке
SQLite3:: SQLException: не Может добавить столбец NOT NULL с ПУСТЫМ УКАЗАТЕЛЕМ значения по умолчанию: ALTER TABLE "представляет" ADD "division_id" целочисленный NOT NULL
У вас уже есть строки в таблице, и вы добавляете новый столбец division_id
. Ему нужно что-то в этом новом столбце в каждой из существующих строк.
SQLite обычно выбирает NULL, но вы указали, что это не может быть NULL, так что же это должно быть? У него нет возможности узнать.
См:
В этом блоге рекомендуется добавить столбец без ограничения not null, и он будет добавлен с NULL в каждой строке. Затем вы можете заполнить значения в division_id
, а затем использовать change_column
для добавления ограничения not null.
Описание сценария миграции, который выполняет этот трехэтапный процесс, см. в блогах, на которые я ссылался.