Mensaje de error
La ejecución de un script de Python para editar datos no versionados almacenados en una geodatabase corporativa falla y devuelve el siguiente error de tiempo de ejecución:
Error:
Espacio de trabajo ya en modo de transacción
Causa
Existen varias causas posibles para el error:
- Nivel de licencia insuficiente para editar la geodatabase corporativa.
- La función InsertCursor() se utiliza dentro de un bucle, como se presenta en la muestra de código que aparece a continuación.
with arcpy.da.InsertCursor(PatchesFC, icFields) as iCursor:
iCursor.insertRow(rowTuple)
- Los parámetros with_undo y multiuser_mode de la función startEditing() son incorrectos. Para obtener más información, consulte el siguiente documento de la ayuda web: ArcGIS Desktop: Editor.
Solución o solución alternativa
Utilice una de las siguientes soluciones para resolver el error:
- La edición de datos versionados solo está disponible con la licencia Standard o Advanced. La edición está deshabilitada con la licencia Basic. Aumente su nivel de licencia para permitir la edición de datos versionados.
- Declare la función InsertCursor() como un objeto en lugar de incluirla en un bucle, como se muestra en el fragmento de código que aparece a continuación.
iCursor = arcpy.da.InsertCursor(PatchesFC, icFields)
- Cambie los parámetros with_undo y multiuser_mode de la función startEditing() a False. Con los parámetros configurados como False, se otorga al usuario actual el control total de los datos de edición. El siguiente fragmento de código demuestra cómo cambiar los parámetros a False.
edit.startEditing(False, False)
Nota:
En la función startEditing(), el primer parámetro es el parámetro with_undo y el segundo es el parámetro multiuser_mode.
Por ejemplo:
startEditing({with_undo}, {multiuser_mode})