エラー メッセージ
Python スクリプトを実行し、エンタープライズ ジオデータベースに保存されているバージョン非対応データを編集しようとすると失敗し、次のランタイム エラーが返されます。
エラー:
Workspace already in transaction mode
原因
エラーには、いくつかの原因が考えられます。
- ライセンス レベル不足により、エンタープライズ ジオデータベースを編集できない。
- 以下のコード サンプルに示すように、InsertCursor() 関数がループで使用されている。
arcpy.da.InsertCursor(PatchesFC, icFields) を iCursor として使用:
iCursor.insertRow(rowTuple)
- startEditing() 関数の with_undo パラメーターと multiuser_mode パラメーターが不正。 詳細については、Web ヘルプ ドキュメント「ArcGIS Desktop: エディター」をご参照ください。
解決策または対処法
次のいずれかの解決策を使用して、このエラーを解決してください。
- バージョン対応登録されたデータの編集は、Standard または Advanced ライセンスでのみ可能です。 Basic ライセンスでは編集は無効になっています。 ライセンス レベルをアップグレードし、バージョン対応登録されたデータの編集を有効にします。
- 以下のコード スニペットに示すように、InsertCursor() 関数をループに含める代わりにオブジェクトとして宣言します。
iCursor = arcpy.da.InsertCursor(PatchesFC, icFields)
- startEditing() 関数の with_undo パラメーターと multiuser_mode パラメーターを False に設定します。 パラメーターを False にすると、現在のユーザーにデータ編集のフル コントロールが付与されます。 次のコード スニペットは、パラメーターを False に設定する方法を示しています。
edit.startEditing(False, False)
注意:
startEditing() 関数の 1 つ目のパラメーターは with_undo で、2 つ目のパラメーターは multiuser_mode です。
例:
startEditing({with_undo}, {multiuser_mode})