1

最近、サーバーの 1 つで、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、南、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)

ジャンゴ-1.5.4

パイソン 2.7.3

4

1 に答える 1

1

バグは別のモジュール djorm-ext-pgarray によって引き起こされたことが判明しました。このモジュールは、エラーのあるサーバーでは更新されていましたが、他のサーバーでは更新されていませんでした。エラーメッセージのpythonモジュールをgrepすることで、その原因を見つけることができました。

これは、モジュール (1 行のコード) での簡単な修正であり、最初にモジュールのローカル コピーを追加してデプロイし、次にモジュールの作成者にプル リクエストを送信しました。

話の教訓: pip を使用してモジュールをアップグレードすることに注意してください。

于 2013-10-01T22:34:06.007 に答える