来自manage.py的数据库错误:“TypeError:无效的postgreSQL类型:bigint”

时间:2013-09-24 16:56:28

标签: python django postgresql django-south

我的一台服务器最近在尝试使用来自manage.py的任何南方相关命令时出现错误

$ 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,south,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 个答案:

答案 0 :(得分:1)

事实证明该错误是由另一个模块djorm-ext-pgarray引起的,该模块已在服务器上更新并出现错误,但在其他服务器上没有。我能够通过python模块查找错误消息来找到它的原因。

这是模块中的快速修复(1行代码),最初通过添加模块的本地副本进行部署,然后通过向模块作者发送拉取请求。

故事的寓意:谨防用pip升级模块。