3

RavenDB データベースでドキュメントを更新しようとすると、OperationVetoedException が発生します。

RavenDB と UniqueConstraintsBundle の私のバージョンは 960 です (以前のバージョンから常に更新されていません)。

確認しましたが、データベースに重複が見つかりません。したがって、このエラーがどのように発生する可能性があるのか​​ わかりません。

以下のコード例のリスト oldVisitorSessions には、一意のオブジェクトのみが含まれています。

コード

using (var session = _documentStore.OpenSession())
{
    foreach (var visitorSession in oldVisitorSessions)
    {
        visitorSession.ProspectType = string.Empty;
        session.Store(visitorSession);
    }

    session.SaveChanges();
}

例外

Url: "/bulk_docs"
Raven.Database.Exceptions.OperationVetoedException: PUT vetoed by Raven.Bundles.UniqueConstraints.UniqueConstraintsPutTrigger because: Ensure unique constraint violated for fields: session_id
   at Raven.Database.DocumentDatabase.AssertPutOperationNotVetoed(String key, RavenJObject metadata, RavenJObject document, TransactionInformation transactionInformation) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 522
   at Raven.Database.DocumentDatabase.<>c__DisplayClass37.<Put>b__30(IStorageActionsAccessor actions) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 476
   at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 330
   at Raven.Database.DocumentDatabase.Put(String key, Nullable`1 etag, RavenJObject document, RavenJObject metadata, TransactionInformation transactionInformation) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 468
   at Raven.Database.Extensions.CommandExtensions.Execute(ICommandData self, DocumentDatabase database) in c:\Builds\RavenDB-Stable\Raven.Database\Extensions\CommandExtensions.cs:line 25
   at Raven.Database.DocumentDatabase.<>c__DisplayClassca.<Batch>b__c6(IStorageActionsAccessor actions) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 1196
   at Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action`1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 376
   at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 337
   at Raven.Database.DocumentDatabase.Batch(IEnumerable`1 commands) in c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 1192
   at Raven.Database.Server.Responders.DocumentBatch.Batch(IHttpContext context) in c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\DocumentBatch.cs:line 94
   at Raven.Database.Server.Responders.DocumentBatch.Respond(IHttpContext context) in c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\DocumentBatch.cs:line 38
   at Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx) in c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 550
   at Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx) in c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 316
4

1 に答える 1

0

'session_id'で一意の制約が失敗していることに注意してください。これは、nullに設定されている可能性があります。そして、そこにはまたヌルである別のものがあります。

于 2012-11-22T09:22:37.827 に答える