Skip to main content
 首页 » 编程设计

django之使用 PostgreSQL 配置 django south

2024年11月01日12jpfss

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

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

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

There is no South database module 'south.db.django.db.backends.postgresql_psycopg2' for your database. Please either choose a supported database, check for SOUTH_DATABASE_ADAPTER[S] settings, or remove South from INSTALLED_APPS.

我正在使用 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 

请您参考如下方法:

这实际上是 south 更高版本中的一个错误,它们不完全向后兼容并假设从 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 实际工作,这无济于事。