3

我无法让我的网站在南方运行。我已经成功安装了南,我可以成功地“导入南”。

./manage.py shell
>>> import south
>>>

但是,一旦我将 'south' 添加到 INSTALLED_APPS,并运行 ./manage.py syncdb (以完成安装),我会收到以下错误:

您的数据库没有 South 数据库模块 '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

4 回答 4

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 事务不知道别名并可能不会让 south 实际工作无济于事。

于 2012-06-06T11:17:36.050 回答
2

你使用的是哪个版本的 South 和 Django?如果您使用的是 Django 1.2,则需要使用最新版本的 South。

South 代码库中的这一行表明,如果没有设置特定的 SOUTH_DATABASE_ADAPTERS,它将从主项目设置文件的数据库设置中设置自己的数据库适配器。这意味着您的数据库设置本身可能是错误的,也许?

你能用你的数据库设置(减去密码)更新你的问题吗?

于 2010-09-25T08:07:12.480 回答
1

我在 South 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吗?

于 2010-09-25T08:42:10.760 回答
1

如果您使用的是 Django 1.1,则使用 South 0.7.0 应该可以。你可以从这里下载。我不知道其他版本是否可以工作,我只为 Postgres 8.3 和 8.4 尝试了 0.7.0。

于 2012-08-17T05:38:25.957 回答