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 — зависание"