質問
Salesforce(新)コネクターの一括レコード更新で以下のエラーが発生します。原因と対処方法を教えてください。
- UNABLE_TO_LOCK_ROW
- CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY
- INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
回答
いずれのエラーも、Salesforce側の仕様によるエラーと考えられます。
親子関係にあるオブジェクトに対して実行することで発生する可能性があります。
■ UNABLE_TO_LOCK_ROW
更新処理が、既に別の更新処理でロックされているレコードへの更新を試み、待機が上限値を超過することで発生する可能性があります。
主な発生要因は以下の通りです。
- 主従関係にある子レコードの更新・新規登録時(子レコード更新時に親レコードがロックされる)
- 「参照レコードが削除された場合の対処方法」に「参照関係に含まれる参照レコードは削除できません。」が設定された参照関係の子レコードの更新・新規登録時
- 別のトランザクション処理にて大量のデータ投入が行われている
- トリガにて処理に時間がかかるロジックがある
- 排他ロック処理を実装している(SELECT FOR UPDATE によるロックの取得)
1つの親オブジェクトに結び付く多数の子オブジェクトに対して同時に処理が実行されないようにすることで発生を防げると考えられます。REST APIを用いたSalesforce(新)コネクターの「レコード更新」で同時処理を避けるオペレーションを行うことで解消する可能性があります。
■ CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY
指定されたレコードの作成・更新・有効化の権限がない可能性があります。オブジェクトに対するアクセス権限が適切に設定されているかご確認ください。
■ INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
挿入・更新操作が存在しないレコードを参照しているか、実行中のユーザーがアクセスできないレコードを参照している場合に発生する可能性があります。関連付けたいレコードが存在しているかを確認のうえ、ユーザーをレコードの所有者にしてから再度レコードを関連付けてください。
■ コミット単位について
Salesforce(新)コネクターの「一括レコード更新処理」はBulk API 2.0を使用しており、コミット単位はBulk API 2.0の仕様に準じます。Salesforce APIの詳細についてはSalesforce社にお問い合わせください。
コメント
0件のコメント
記事コメントは受け付けていません。