2013-09-24 771 views
1

我的一個服務器的最近開始有嘗試使用任何南部相關命令從manage.py數據庫錯誤:「類型錯誤:無效的PostgreSQL類型:BIGINT」

$ python ./manage.py migrate 
TypeError: invalid postgreSQL type: bigint 
$ python ./manage.py syncdb 
TypeError: invalid postgreSQL type: bigint 
$ python ./manage.py shell 
TypeError: invalid postgreSQL type: bigint 

的時候會出現錯誤設置:django,postgis,南,Ubuntu。

令人困惑的部分是,最近這臺服務器上沒有任何變化,另外3臺服務器應該是完全相同的設置。

我打開Postgres的語句記錄,但我沒有看到任何明顯的錯誤有:

2013-09-24 16:33:14 UTC LOG: statement: SHOW default_transaction_isolation 
2013-09-24 16:33:14 UTC LOG: statement: SET default_transaction_isolation TO DEFAULT 
2013-09-24 16:33:14 UTC LOG: statement: SET TIME ZONE 'America/Chicago' 
2013-09-24 16:33:14 UTC LOG: statement: SET default_transaction_isolation TO 'read committed' 
2013-09-24 16:33:14 UTC LOG: statement: BEGIN 
2013-09-24 16:33:14 UTC LOG: statement: SELECT postgis_lib_version() 

從settings.py:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'redacted', 
     'USER': 'redacted', 
     'PASSWORD':'...', 
     'HOST': 'localhost', 
     'PORT': '5432', 
    } 
} 

的Postgres版本:

psql (9.1.9) 
Type "help" for help. 

redacted=# select version(); 
                version 
------------------------------------------------------------------------------------------------------------ 
PostgreSQL 9.1.9 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit 
(1 row) 
redacted=# select postgis_lib_version(); 
postgis_lib_version 
--------------------- 
2.0.1 
(1 row) 

Django-1.5.4

Python 2.7.3

回答

1

事實證明,這個錯誤是由另一個模塊djorm-ext-pgarray引起的,該模塊在服務器上更新了錯誤,但在其他服務器上沒有更新。我可以通過python模塊對錯誤信息進行grep來找到它的原因。

這是模塊(1行代碼)的快速修復,最初通過添加模塊的本地副本進行部署,然後向模塊作者發送拉取請求。

故事的寓意:謹防用pip升級模塊。