使用PostgreSQL配置django south

时间:2010-09-25 07:46:15

标签: django django-south

我无法让我的网站在南方运行。我已成功安装在南方,我可以“成功进口南方”。

./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

4 个答案:

答案 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。