2014-02-28 2 views

ответ

1

Мое понимание - это пробел внутри транзакции для баз данных, которые его поддерживают, например Postgres. Если вы находитесь в базе данных, которая не поддерживает это (cough MySQL cough), вы не можете использовать эту функцию.

+1

Почему он не будет работать в транзакции в MySQL –

+1

MySQL DDL команда, как 'ALTER/CREATE/DROP TABLE' автоматически совершают любые транзакции в процессе, поэтому обычно «безопаснее» (по крайней мере, более предсказуемо) вообще не использовать транзакции. Другими словами, изменения схемы не содержатся в транзакциях. –

1

Это то, что вы можете решить в пределах env.py, в котором вы настраиваете поведение миграции в соответствии с вашими настройками. Вы можете увидеть, как убедиться, что ваши обновления произойдут в транзакции из шаблона, представленный в качестве примера для общих баз данных: https://github.com/zzzeek/alembic/blob/eaaafbca88f85f5432e04affe1f94cbf1ad06080/alembic/templates/generic/env.py#L64

def run_migrations_online(): 
    ... 
    with context.begin_transaction(): 
     context.run_migrations() 
Смежные вопросы