2010-09-25 34 views
3

我無法讓我的網站在南方運行。我已經成功安裝了南部,並且可以成功導入南部。用PostgreSQL配置django南部

./manage.py shell 
>>> import 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 
+0

在Django 1.2.1中使用South 0.7.1和Postgresql 8.3工作。您使用的是Django,South和Postgresql的哪些版本? – 2010-09-25 08:05:52

回答

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?

+0

是的,我正在使用1.1.1。讓我嘗試升級到Django 1.2 – raviv 2010-09-26 18:39:22

+0

是的,升級到Django 1.2修復了它。 – raviv 2010-10-27 08:48:02

2

您正在使用哪個版本的South和Django?如果你使用Django 1.2,你需要使用最新版本的South。

This line南部的代碼庫顯示,如果沒有設置特定的SOUTH_DATABASE_ADAPTERS,它會從主項目設置文件的數據庫設置中設置自己的數據庫適配器。這意味着你的數據庫設置本身可能是錯誤的,也許?

你可以用你的數據庫設置(減去密碼)更新你的問題嗎?

+0

PS - 我幾乎每時每刻都在使用south + postgres,所以它確實有效; o) – 2010-09-25 08:08:00

+0

你是對的 - 這是一個版本問題。我在Django 1.1.1上。升級到1.2固定它。 – raviv 2010-10-27 08:48:29

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或火鳥所以避風港」與那些測試。

第二個注意:不能幫助那個django 1.1事務沒有別名意識,並且可能不會讓南實際工作。

1

如果你使用的是Django 1.1,那麼使用South 0.7.0應該可以。您可以從here下載它。我不知道其他版本是否可以工作,我只對Postgres 8.3和8.4嘗試了0.7.0。