Документация

Устранение распространенных ошибок

Этот раздел поможет вам решить наиболее частые проблемы, которые могут возникнуть при установке и запуске проекта "Crisis Monitor".


1. Ошибка Error: No such command '...'

  • Проблема: При попытке выполнить любую команду flask, например, flask db upgrade или flask seed-roles, вы видите в терминале ошибку: Error: No such command 'db'. или Error: No such command 'seed-roles'.

  • Причина: Flask не может найти ваше приложение. Это происходит, когда переменная окружения FLASK_APP не установлена. Эта переменная должна указывать на файл, где создается экземпляр вашего приложения (в данном проекте это run.py).

  • Решение:

    1. Проверьте файл .env. Убедитесь, что в корневой папке проекта есть файл .env и в нем содержится строка: env FLASK_APP=run.py
    2. Активируйте виртуальное окружение. Убедитесь, что локальное окружение .venv активно. Если нет, активируйте его: bash source .venv/bin/activate
    3. Убедитесь, что python-dotenv установлен. Эта библиотека автоматически загружает переменные из .env файла. Она должна быть в requirements.txt.

2. Не удается войти под пользователем admin

  • Проблема: Приложение успешно запустилось, но при попытке входа с логином admin и паролем admin вы получаете ошибку "Invalid username or password".

  • Причина: Скорее всего, вы создали структуру базы данных (flask db upgrade), но не наполнили её начальными данными. В результате таблица user пуста, и в ней нет пользователя admin.

  • Решение: Выполните команды для наполнения базы данных (сидинга). Порядок выполнения критически важен.

    ```bash

    1. Сначала создайте роли (обязательно!)

    flask seed-roles

    2. Теперь создайте пользователя-администратора

    flask seed-admin `` После выполнения этих команд пользовательadmin` будет создан, и вы сможете войти в систему.


3. Команда flask db upgrade завершается с ошибкой

  • Проблема: При выполнении flask db upgrade процесс прерывается с ошибкой, которая может выглядеть как UndefinedColumn, KeyError, multiple heads или другая ошибка, связанная с базой данных.

  • Причина №1: Несоответствие моделей и миграций Иногда разработчик добавляет новое поле в модель SQLAlchemy (в директории app/models/), но забывает создать для этого изменения файл миграции. В результате код приложения ожидает наличия столбца в БД, которого там нет.

  • Решение для Причины №1:

    1. Создайте новую миграцию, которая зафиксирует изменения в моделях: bash flask db migrate -m "Add new field or feature"
    2. После успешного создания файла миграции снова примените все миграции: bash flask db upgrade
  • Причина №2: Поврежденная история миграций (Multiple Heads) Это более сложная проблема, обнаруженная в ходе аудита этого проекта. Она возникает, когда несколько миграций были созданы из одной и той же родительской миграции, образуя "ветки" в истории. Alembic (инструмент миграций) не знает, какую ветку выбрать, и останавливается.

  • Решение для Причины №2:

    1. Найдите "головы" (конфликтующие ветки), выполнив команду: bash flask db heads Вы увидите несколько ревизий (ID), например xxxx... и yyyy....

    2. Объедините "головы" в одну миграцию слияния. Замените <head1> и <head2> на ID из предыдущего шага. bash flask db merge <head1> <head2> -m "Merge conflicting migration branches" Если "голов" больше двух, укажите их все.

    3. Примените миграции снова. После того как история станет линейной, команда upgrade должна выполниться успешно: bash flask db upgrade