Flask Migrate SQLAlchemy — зависание

Одна из причин зависания Flask SQLAlchemy при миграции.

Если виснет процесс при миграции, когда идет запуск команд:

flask db init
flask db migrate -m "Описание изменений"
flask db upgrade

То может быть несколько причин:
— не остановлен сайт, мешающий внести изменения в БД;
— на сайте есть бесконечный цикл, вроде функции перезапуска чего-нибудь.

Это связано с тем, что во время миграции анализируется весь код от начальной точки запуска идущий по цепочке импортов, вызовов функций и методов. И если что-то мешает в ней завершить процесс, то и миграция зависнет.

Пример ошибки

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column checks.active does not exist
LINE 1: …AS checks_slug, checks.example AS checks_example, checks.act…

Как выше и писал, идет «пробежка» по всему коду. В коде мы хотим добавить в таблицу checks новую колонку active, но т.к. в коде сайта имеется участок, который вызывает класс таблицы checks:

check_list = db.session.query(Check).all()

А на этот момент в нём нет еще колонки active, то происходит ошибка.

Для исправления перед запуском миграции надо временно закомментировать участок, который обращается к этому классу.

Кстати, на сайте нет рекламы. У сайта нет цели самоокупаться, но если вам пригодилась информация можете задонатить мне на чашечку кофе в макдаке. Лайкнуть страницу или просто поблагодарить. Карма вам зачтется.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Flask Migrate SQLAlchemy — зависание"