Добавление/удаление поля со значением по умолчанию через миграцию (MSSQL)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Добавление/удаление поля со значением по умолчанию через миграцию (MSSQL)

Сообщение Alexum »

Доброго времени суток!

Редко приходилось откатывать миграции с добавлением колонок, но вот потребовалось и столкнулся с проблемой (сервер MSSQL 2014):

В up() миграции вызываю добавление новой колонки, в которой должны быть разрешены нулевые значения:

Код: Выделить всё

$this->addColumn('agents', 'agent_work_start_date', $this->date()->null());
Колонка добавляется. При этом, по всей видимости в ColumnSchemaBuilder отрабатывает defaultValue() и в таблице создаётся дополнительный объект - ограничение с установкой дефолтного значения NULL, с именем вида DF_agents_wo_****** .

В down() для отката:

Код: Выделить всё

 $this->dropColumn('agents', 'agent_work_start_date');
Если попытаться откатить миграцию, то со стороны БД прилетает ошибка, что нельзя удалить столбец из-за его связи с ограничением DF_agents_wo_******.

Кто подскажет, как правильно удалять такие колонки? Ну или добавлять колонки без создания ограничений со значением по-умолчанию (и без него проблем не наблюдается).
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Добавление/удаление поля со значением по умолчанию через миграцию (MSSQL)

Сообщение Alexum »

На всякий случай отпишусь. Проблема была в том, что в принципе без необходимости не нужно было применять метод null(), т.к. его использование и приводит к формированию ограничения, которое потом мешает откату.
Закрыто