【问题标题】:django mysql not working on pythonanywheredjango mysql 无法在 pythonanywhere 上运行
【发布时间】:2015-03-06 00:04:49
【问题描述】:

我尝试了 3 种访问数据库的方法:

  1. [WORKS] 来自 bash shell:~$ mysql -u <username> -h mysql.server -p '<username>$<db_name>'
  2. [作品]~$ python manage.py syncdb
  3. [不起作用]
    • 同步数据库
    • 重新加载应用
    • 转到网址

错误:

_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',
  }
}

Pythonanywhere 的 wsgi 模块正在加载正确的设置脚本。已在“数据库”选项卡中设置并检查了数据库密码。

我在 virtualenv 中使用 Django 1.7、Python 3.4、mysqlclient 1.3.4。

感谢您的帮助。

[编辑]:

第一个错误其实是:

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

我不知道这是否有意义。

【问题讨论】:

    标签: mysql django pythonanywhere


    【解决方案1】:

    问题是缺少数据库连接,与会话后端无关。我通过 os.environ 变量提供了数据库的密码。这必须在 python 任何地方的 wsgi 脚本中设置:

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

    全部修复。

    【讨论】:

    • 哈哈。是的。感谢您发现这一点。我的 mac 认为它最清楚。
    • 感谢 @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': '', } }
    • This instructions也帮了我
    猜你喜欢
    • 2020-08-01
    • 2012-12-19
    • 1970-01-01
    • 2020-04-08
    • 2019-08-17
    • 2021-12-01
    • 1970-01-01
    • 2021-06-05
    • 2016-04-28
    相关资源
    最近更新 更多