我无法让我的网站在南方运行。我已成功安装在南方,我可以“成功进口南方”。
./manage.py shell
>>> import south
>>>
但是,一旦我将'south'添加到INSTALLED_APPS,并运行./manage.py syncdb(以完成安装),我会收到以下错误:
您的数据库没有南数据库模块'south.db.django.db.backends.postgresql_psycopg2'。请选择支持的数据库,检查SOUTH_DATABASE_ADAPTER [S]设置,或从INSTALLED_APPS中删除South。
我正在使用PostgreSQL数据库和postgresql_psycopg2库。我很困惑,因为Postgres肯定是一个受支持的数据库。我是否需要在settings.py?
中手动配置SOUTH_DATABASE_ADAPTER编辑:这是我的数据库设置。我知道他们的工作 - 我试图让这个运行的(测试)服务器已经正常地与数据库谈了几个星期。
DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'iknowthisiscorrect'
DATABASE_HOST = '' #localhost
DATABASE_PORT = '5432' # I've configured Postgres to use this port
答案 0 :(得分:3)
这实际上是南方版本中的一个错误,它们并不完全向后兼容,并假设从django.db.utils导入,直到django 1.2才存在。
您可以非常基本地修补此问题,打开south/db/generic.py
并编辑第6行:
try:
from django.db.utils import DatabaseError
except:
from django.db import DatabaseError
注意:此导入也在其他db/*.py
文件中,但我没有使用oracle或firebird,所以没有测试过。
第二个注意事项:没有帮助django 1.1交易没有别名意识,并且可能不会让南方实际工作。
答案 1 :(得分:2)
您使用的是哪个版本的South和Django?如果您使用的是Django 1.2,则需要使用最新版本的South。
南方代码库中的This line表明如果没有设置特定的SOUTH_DATABASE_ADAPTERS,它会从主项目设置文件的数据库设置中设置自己的数据库适配器。这意味着您的数据库设置本身可能是错误的,也许?
您可以使用数据库设置(减去密码)更新您的问题吗?
答案 2 :(得分:1)
我在南方source code发现了这条评论。看看第63行。
63 # This error should only be triggered on 1.1 and below.
64 sys.stderr.write(
65 (
66 "There is no South database module '%s' for your database. " + \
67 "Please either choose a supported database, check for " + \
68 "SOUTH_DATABASE_ADAPTER[S] settings, " + \
69 "or remove South from INSTALLED_APPS.\n"
70 ) % (module_name,)
您使用的是哪个版本的Django?是< = 1.1?
答案 3 :(得分:1)
如果您使用的是Django 1.1,则使用South 0.7.0应该可以正常工作。您可以从here下载。我不知道其他版本是否可行,我只试用了Postgres 8.3和8.4的0.7.0。