Alembic migrations - сохранение сценариев между двумя развертываниями - PullRequest
0 голосов
/ 15 мая 2019

У меня проблема с запуском автоматических миграций с библиотекой alembic (я использую библиотеку raw alembic ).

Итак, это настройка приложения:

  • У меня есть планировщик (скрипт Python, который вычисляет что-то, а затем сохраняет его в базе данных)

  • и API REST колбы (который использует данные, сохраненные в базе данных планировщиком вернуть адекватный ответ)

  • Затем я развертываю приложение со скриптом, который запускает следующие три команды:
alembic revision --autogenereate
alembic upgrade head
python run_scheduler.py

После первоначального развертывания таблица alembic_version создается в базе данных PostgreSQL со значением идентификатора в столбце version_num, а сценарий миграции (давайте назовем этот сценарий xx.py) создается в alembic/versions/

При повторном развертывании приложения (с запущенными миграциями и планировщиком): я получаю

"Не удалось найти ревизию, указанную в 'xxxxxxx'

Почему?

Поскольку сценария xx.py больше нет (докер создан из репозитория с контролем версий), а xx - это значение в столбце version_num в таблице alembic_version.

Как подойти и решить эту проблему?

1 Ответ

0 голосов
/ 15 мая 2019

Быстрое исправление автора: удалите таблицу alembic_version с кодом ниже (внутри скрипта alembic / env.py)

target_metadata = Base.metadata # for context

sql.execute('DROP TABLE IF EXISTS alembic_version', engine)
...