Как я могу перенести таблицу с данными в таблицу, которая получила новый столбец datetime, который не обнуляется? - PullRequest
0 голосов
/ 22 июня 2019

Я добавил столбец

registered_on = db.Column(db.DateTime, nullable=False)

в мою таблицу users.Миграция, которая была создана автоматически:

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    ...
    op.add_column('users', sa.Column('registered_on', sa.DateTime(), nullable=False))
    ...

Когда я ее выполняю, я получаю исключение о недопустимом значении 0000-00-00 00:00:00 (или около того).

Как настроить скрипт миграциичтобы не было этой проблемы?

(В этой ситуации заполнение фиктивного значения, вероятно, было бы лучшим)

1 Ответ

0 голосов
/ 23 июня 2019

Я могу придумать два способа сделать это:

  1. Добавить server_default к операции add_column:
op.add_column('users', sa.Column('registered_on', sa.DateTime(), nullable=False, server_default=func.now()))
Сначала вставьте столбец как обнуляемый, затем отредактируйте все строки, чтобы они имели значение.Когда всем строкам присвоено ненулевое значение, выполните другую миграцию, чтобы изменить столбец на ненулевой.
...