2

数日前、レガシー システムから新しいシステムに移行されたデバッグ データの CRUD を作成する目的で、管理者機能を使用して django1.4 でプロジェクトを作成しました (移行は完全には成功しませんでした)。django を使用して作成します。 1.4 で、ラップトップに実稼働データベースのコピーがありますが、私の Linux では postgresql9.1 を使用しているため、元のサーバー (postgresql8.1) でプロジェクトをテスト データベースに構成しようとすると、エラーが発生しましたsyncdbmigrateステートメント:

File "/home/diegueus9/webapps/fixsysandinos/local/lib/python2.7/site-packages/django/db/backends/util.py", line 40, in execute
    return self.cursor.execute(sql, params)
  File "/home/diegueus9/webapps/fixsysandinos/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: syntax error at or near "RETURNING"
LINE 1: ...") VALUES (E'permission', E'auth', E'permission') RETURNING ...

そこで、少し調べてみたところ、django でチケット#10467 (現在クローズされている) を見つけました。これは、ステートメント RETURNING を使用すると postgresql 8.1 でエラーが発生することを示しています。これは、8.2 までその構文をサポートしていないためです (と思います)。 、バグは 8 か月前にクローズされたように見えますが、ある時点で再導入されたと思います。チケットのスレッドでは、問題は自動コミットの動作に関連している可能性があると述べており、connection.features.can_return_id_from_insert.

質問は次のとおりです。

再度開く必要があるのはバグですか?connection.features.can_return_id_from_insert自動コミットの動作を無効にしてリスクを想定する必要があります (そうはなりません) False

4

1 に答える 1

0

データベースをアップグレードしたり、djangoバージョンをダウングレードしたりすることは、クライアントの要件であるためオプションではありませんが、 77行目でRETURNステートメントの設定を無効にすることができます。ただし、これは動作に影響します。 djangoを使用するので、 virtualenvwrapperのようなものを使用する必要があります。can_return_id_from_insertFalsedjango.db.backends.postgresql_psycopg2.base

于 2012-06-10T16:09:18.050 に答える