2012-03-08 7 views
5

誰でも私にそのエラーを説明できますか?どのように修復できますか?ConflictError:データベースの競合エラー

我々が使用

  • Ploneの4
  • Zopeの2.12.19
  • ZEO
  • ZODB-一時保管

エラーログ

Site Error 

An error was encountered while publishing this resource. 

Sorry, a site error occurred. 

Traceback (innermost last): 

Module ZPublisher.Publish, line 239, in publish_module_standard 
Module ZPublisher.Publish, line 197, in publish 
Module ZPublisher.Publish, line 197, in publish 
Module ZPublisher.Publish, line 197, in publish 
Module ZPublisher.Publish, line 173, in publish 
Module plone.app.linkintegrity.monkey, line 17, in zpublisher_exception_hook_wrapper 
Module ZPublisher.Publish, line 135, in publish 
Module Zope2.App.startup, line 291, in commit 
Module transaction._manager, line 93, in commit 
Module transaction._transaction, line 322, in commit 
Module transaction._transaction, line 419, in _commitResources 
Module ZODB.Connection, line 767, in tpc_vote 
Module ZEO.ClientStorage, line 1068, in tpc_vote 
Module ZEO.ClientStorage, line 905, in _check_serials 

ConflictError: database conflict error (oid 0x08, class Products.Transience.Transience.Length2, serial this txn started with 0x0394fddba7126fbb 2012-03-08 07:23:39,157504, serial currently committed 0x0394fddbb0a4cb22 2012-03-08 07:23:41,400873) 

Troubleshooting Suggestions 

The URL may be incorrect. 
The parameters passed to this resource may be incorrect. 
A resource that this resource relies on may be encountering an error. 

For more detailed information about the error, please refer to the error log. 

If the error persists please contact the site maintainer. Thank you for your patience. 

エラーなしでData.fsを修復しようとしました...

ありがとうございます。

+2

データベース競合エラーが発生する可能性があります。トランザクションが完了できなかった場合に発生します。これはデベロッパーかプロダクションインスタンスですか?エラーがいつ発生し、直前にどのような変更を行ったのですか? –

+0

それはプロダクションサーバーです エラーはランダムに発生します - ユーザーがブラウザビューを開くと、単純なフォルダまたはエディタが動作します... – user966660

+0

@ user966660 - この問題は何か?私はまったく同じ問題を扱っています - それは認証/セッション(0x08 oidはセッションマネージャの一時記憶域にあります)と関連しているようです。 –

答えて

3

競合2人のユーザーが同じオブジェクト(カタログデータ構造の一部であることが多い)を同時に更新しようとすると、システムが競合を解決できない場合にエラーが発生します。すべての競合解決コードを確実に得るために、ZopeサーバーにZopeインスタンスのすべての卵が含まれていることを確認する必要があります。

単純なビューでこれらを表示している場合は、そのビューのレンダリング時にデータベースを更新するコードがある可能性があります。これはZODBでの良い考えではありません。

+0

ZEOサーバにZopeインスタンスのすべての卵が含まれている_ ?それについてのドキュメントは見つかりませんでした。 [Zope2 wiki](http://wiki.zope.org/zope2/ZEOZopeEnterpriseObjects)のコメント:Data.fsはZEOサーバーに保存され、すべての製品はクライアントにインストールされます。 –

+1

plone.recipe.zeoserver - _ "eggs - ビルドアウトのドキュメントで見つけたのは、卵として他のパッケージを含める必要がある場合です。たとえば、_P_resolveConflictを使って競合解決を実行するためにZEOサーバー側でアプリケーションコードを利用できるようにする場合に設定します()ハンドラ)。 "_そして、このようなハンドラがProducts.Transienceにあります。Zope 2.12 eggの一部です。 –

+0

@Laurence Rowe - "そのビューをレンダリングする際にデータベースを更新するいくつかのコードは "ZODBを意味しますか? – Ravi