django mysql не работает на pythonanywhere

Я пробовал 3 способа доступа к базе данных:

  1. [РАБОТАЕТ] из оболочки bash: ~$ mysql -u <username> -h mysql.server -p '<username>$<db_name>'
  2. [РАБОТАЕТ] ~$ python manage.py syncdb
  3. [DOES NOT WORK]
    • Syncdb
    • Перезагрузить приложение
    • Перейти по ссылке

Ошибка:

_mysql_exceptions.OperationalError: (1045, "Access denied for user '<username>'@'ip-10-186-190-7.ec2.internal' (using password: NO)")

Настройки:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': '<username>$<db_name>',
    'USER': '<username>',
    'PASSWORD': <password>,
    'HOST': 'mysql.server',
    'PORT': '3306',
  }
}

Модуль wsgi Pythonanywhere загружает правильный сценарий настроек. Пароль базы данных установлен и проверен на вкладке «Базы данных».

Я использую Django 1.7, Python 3.4, mysqlclient 1.3.4 внутри virtualenv.

Спасибо за вашу помощь.

[Редактировать]:

Собственно первая ошибка:

AttributeError: 'SessionStore' object has no attribute '_session_cache'

Я не знаю, имеет ли это смысл.


person arkaeologic    schedule 07.01.2015    source источник


Ответы (1)


Проблема заключалась в отсутствии соединения с базой данных и не была связана конкретно с серверной частью сеанса. Я предоставлял пароль для базы данных через переменную os.environ. Это должно быть установлено в скрипте python в любом месте wsgi:

os.environ['DB_PWD'] = '<password>'

Все исправлено.

person arkaeologic    schedule 08.01.2015
comment
Ха-ха. Да. Спасибо, что заметили это. Мой Mac думает, что знает лучше. - person arkaeologic; 09.01.2015
comment
Спасибо @arkaeologic за подсказку о том, как настроить файл wsgi. В моих settings.py я беру всю информацию о своей базе данных из env. такие переменные: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': environ['DB_NAME'], 'USER': environ['DB_USERNAME'], 'PASSWORD': environ['DB_PASSWORD'], 'HOST': environ['DB_HOST'], 'PORT': '', } } - person Dmitry; 12.03.2016
comment
Эти инструкции также помогли мне - person Dmitry; 12.03.2016