Как решить, “Не может добавить столбец NOT NULL с ПУСТЫМ УКАЗАТЕЛЕМ значения по умолчанию” в SQLite3?

Я получаю следующую ошибку при попытке добавить столбец 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

55
задан Rubens Mariuzzo 16 August 2013 в 15:53
поделиться

1 ответ

У вас уже есть строки в таблице, и вы добавляете новый столбец division_id. Ему нужно что-то в этом новом столбце в каждой из существующих строк.

SQLite обычно выбирает NULL, но вы указали, что это не может быть NULL, так что же это должно быть? У него нет возможности узнать.

См:

В этом блоге рекомендуется добавить столбец без ограничения not null, и он будет добавлен с NULL в каждой строке. Затем вы можете заполнить значения в division_id, а затем использовать change_column для добавления ограничения not null.

Описание сценария миграции, который выполняет этот трехэтапный процесс, см. в блогах, на которые я ссылался.

39
ответ дан 26 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: