3

我在这里问以下问题,因为它涉及开发人员工具。

我已将 Ubuntu 10.04 LTS 工作站升级到 12.04 LTS(32 位)。今天我去尝试一个 Django Web 应用程序,它一直在没有错误地工作。它在 Apache 上运行。

该应用程序不再工作并返回错误。我一直在解决所有位于/var/log/apache2/error.log.

第一个错误涉及 UCS2 和 UCS4(为便于阅读而修剪了行)。

ImportError: /usr/local/lib/python2.7/lib-dynload/_io.so: 
undefined symbol: PyUnicodeUCS2_FromObject
mod_wsgi (pid=9246): Target WSGI script 
'/usr/local/www/wsgi-scripts/wsgi_amr_handler.py' 
cannot be loaded as Python module.

通过重建和重新安装最新版本的 mod_wsgi 可以清除这一点。

当前错误涉及 mysqldb 不是有效的后端。这是错误(为清楚起见删除了时间戳):

backend = load_backend(db['ENGINE'])
File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 51, 
in load_backend
raise ImproperlyConfigured(error_msg)
ImproperlyConfigured: 'mysql' isn't an available database backend.
Try using django.db.backends.mysql instead.
Error was: No module named mysql.base

这是 Django 应用程序的 settings.py 中的配置问题还是其他问题?

是否有 Python 2.7、mod_wsgi、Django 和 mysqldb 的安装顺序,这可能是问题所在吗?

这是我当前的(收到评论后)settings.py

DATABASES = {
'default': {
'ENGINE': ' django.db.backends.mysql', 
'NAME': 'server',      # Or path to database file if using sqlite3.
'USER': 'ox',          # Not used with sqlite3.
'PASSWORD': 'xxxx',                  # Not used with sqlite3.
'HOST': '',     
'PORT': '',  
    }
}

以下是错误:

ImproperlyConfigured: ' django.db.backends.mysql' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'
Error was: No module named  django.db.backends.mysql.base
4

1 回答 1

5

您显然也升级了 Django 安装。最近的 Django 版本需要后端模块的名。您指定数据库的方式在1.2 版中已更改,您需要按照升级说明更新您的 Django 项目代码库。

对于 MySQL,正确的后端现在是django.db.backends.mysql;打开settings.py并更新您的DATABASES条目。

于 2012-11-26T17:34:55.043 回答