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