2013-01-24 50 views
2

在MacOS安裝Postgres.app,並初始化使用Django,DJ-數據庫的URL的蟒蛇的virtualenv和psycopg2後,我多次得到:Django的1.4執行syncdb + psycopg失敗時區錯誤

/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 194, in _cursor 
self.ops.set_time_zone_sql(), [tz]) 
psycopg2.DataError: invalid value for parameter "TimeZone": "UTC" 

當執行「 python manage.py syncdb「爲我的Django應用程序。

關於原因是什麼的任何想法?

回答

3

當我檢查base.py文件的行194我發現下面的代碼:

tz = 'UTC' if settings.USE_TZ else settings_dict.get('TIME_ZONE') 

通過我的settings.py文件爲「假」改變USE_TZ參數上,然後我得到了以下錯誤:

psycopg2.DataError: invalid value for parameter "TimeZone": "Australia/Perth" 

「澳大利亞/珀斯」在我的settings.py文件時區設置,以便至少它現在訪問我的時區。

在psycopg2 base.py文件再次找我注意到下面的代碼:

if tz: 
       try: 
        get_parameter_status = self.connection.get_parameter_status 
       except AttributeError: 
        # psycopg2 < 2.0.12 doesn't have get_parameter_status 
        conn_tz = None 
       else: 
        conn_tz = get_parameter_status('TimeZone') 

       if conn_tz != tz: 

把調試「打印conn_tz」到base.py表明conn_tz(大概是的Postgres數據庫的時區設置)是「澳大利亞/西」。

將我的settings.py TIME_ZONE更改爲'Australia/West'允許syncdb正常運行。

相關問題