Как решить ошибку приложения на heroku?

Я пытаюсь создать приложение на django и пытаюсь разместить его на heroku. Локально все работает отлично. Я получаю ошибку при попытке перенести базу данных на приложение heroku, выполнив команду -

heroku run python manage.py migrate

Это ошибка, которую я получаю -

settings.py -

prod_db  =  dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(prod_db)
    

Как я могу решить этот вопрос? Пожалуйста, спросите, нужно ли добавить какие-либо мои файлы к вопросу.

Вы используете MySQL для локальной разработки и PostgreSQL в производстве. Соединение с PostgreSQL происходит из переменной окружения DATABASE_URL, которую dj_database_url использует по умолчанию.

Поскольку вы обновляете базу данных по умолчанию из среды (а не заменяете ее), специфичная для MySQL опция init_command остается в конфигурации PostgreSQL. Драйвер PostgreSQL psycopg2 не знает, что с ним делать.

Я сильно настоятельно рекомендую вам использовать один и тот же сервер баз данных для разработки и производства. Как вы уже поняли, движки баз данных не заменяют друг друга. В данном случае, вероятно, проще всего перейти с PostgreSQL на MySQL на Heroku.

Сначала избавимся от вещей Postgres:

Теперь установите сервер MySQL. Я предлагаю вам выбрать из доступных аддонов. Есть несколько вариантов MySQL, включая JawsDB и ClearDB. Вот пример использования ClearDB:

heroku addons:create cleardb:ignite

Ignite - это бесплатный уровень для ClearDB. После инициализации ваше приложение увидит новую переменную окружения CLEARDB_DATABASE_URL. Другие аддоны будут использовать другие имена переменных окружения, поэтому обязательно ознакомьтесь с их документацией.

Наконец, обновите конфигурацию Django. dj_database_url по умолчанию использует переменную окружения DATABASE_URL, но мы можем указать ей использовать другую переменную:

prod_db = dj_database_url.config(env="CLEARDB_DATABASE_URL", conn_max_age=500)
DATABASES['default'].update(prod_db)
Вернуться на верх