繁体   English   中英

Django 500内部服务器错误-配置不正确:加载MySQLdb模块时出错:

[英]Django 500 Internal Server Error - ImproperlyConfigured: Error loading MySQLdb module:

我刚开始使用MySQL作为Django的数据库。 我遵循了许多不同的教程和文档,但是当我将其部署到生产服务器时,始终收到500 Internal Server Error 在我的开发机器上工作正常。

我想念什么? 有应更改的设置或错过的步骤吗?

谢谢

错误日志

[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]     return getattr(connections[DEFAULT_DB_ALIAS], item)
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]   File "/var/www/bias_experiment/lib/python2.7/site-packages/django/db/utils.py", line 198, in __getitem__
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]     backend = load_backend(db['ENGINE'])
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]   File "/var/www/bias_experiment/lib/python2.7/site-packages/django/db/utils.py", line 113, in load_backend
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]     return import_module('%s.base' % backend_name)
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]   File "/var/www/bias_experiment/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]     __import__(name)
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]   File "/var/www/bias_experiment/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233]     raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
[Mon Aug 18 19:23:10 2014] [error] [client 134.226.38.233] ImproperlyConfigured: Error loading MySQLdb module: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 3, 'final', 0)

我的设定

  • 运行12.04.5 LTS的Ubuntu VM
  • Apache / 2.2.22(Ubuntu)
  • Python 2.7.3
  • 的virtualenv == 1.7.1.2
  • Django的== 1.6
  • 在MySQL-python的== 1.2.3
  • 适用于debian-linux-gnu(x86_64)的mysql Ver 14.14 Distrib 5.5.38,使用readline 6.2

我的settings.py

DATABASES = {
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'django_db',                                       
        'USER': 'root',
        'PASSWORD': 'my_password',
        'HOST': '127.0.0.1',
        'PORT': '', 
    }
}

我已经在生产环境中创建了数据库

CREATE DATABASE django_db;
Query OK, 1 row affected (0.01 sec) 
mysql>

然后我运行了syncdb

(bias_experiment)Macintosh-2:src user$ python manage.py syncdb
Creating tables ...
Creating table django_admin_log
....

这行:

ImproperlyConfigured: Error loading MySQLdb module: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 3, 'final', 0) 

表示您在MysqlDB和MySQL之间版本可能不匹配。 听起来像是查看并重新安装您的从属库即可解决此问题。

要更详细地描述问题,请执行以下操作:

在这种情况下,apt-get正在安装MySQL-python == 1.2.3。 最新版本是MySQL-python == 1.2.5。 但是apt-get找不到它,因此使用以下命令完全删除MySQL-python == 1.2.3:

sudo apt-get remove --purge python-mysqldb

然后通过pip重新安装

sudo pip install mysql-python

(请注意,程序包名称略有不同)

为了帮助其他可能出现相同错误的人:

我收到了相同的错误,但是我的MySQL-python版本与预期的相同:1.2.5。 问题是我将MySQLdb文件夹符号链接到了项目的根文件夹。 通过将符号链接文件夹移动到保存我的Django设置的文件夹中,我可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM