[Python] Erro ao adicionar campo 'DATAREVERIFICACAO': ERROR 000852:

Discussão em 'Python' iniciado por Stack, Novembro 29, 2024.

  1. Stack

    Stack Membro Participativo

    Erro ao adicionar campo 'DATAREVERIFICACAO': ERROR 000852: Não é possível adicionar o campo DATAREVERIFICACAO para GISADMIN.Survey. Ocorreu um erro ao executar (AddField).

    Esse erro é obtido através da execução desse código no notebook do ArcGIS Pro 3.0.0 versão 2022:

    #Código forms
    Import arcpy.

    #colocar caminhos das camadas
    Camada_origem = "r"C:\Users\nicolasoliveira\Documents\ArcGIS\Projects\form"
    Camada_destino = "r"C:\Users\nicolasoliveira\Documents\ArcGIS\Projects\form"


    Define copiar_atributos():
    """
    Copia todos os atributos e a geometria da camada de origem para a camada de destino, excluindo o campo 'ID'.
    Cria os campos ausentes na camada de destino, caso necessário.
    """
    try:
    Verificar se a camada de destino existe.
    if arcpy.Exists(camada_destino):
    # Iniciar uma sessão de edição.
    Workspace = arcpy.Describe(camada_destino).path
    With arcpy.da.Editor(workspace) as editor:
    print("Sessão de edição iniciada.")

    #obter campos da camada de origem
    Campos_origem = [field.name for field in arcpy.ListFields(camada_origem)]
    #Obter campos da camada de destino.
    Campos_destino = [field.name for field in arcpy.ListFields(camada_destino)]

    Excluir o campo 'ID' e outros campos gerenciados pelo sistema.
    Campos_excluir = ['ID', 'OBJECTID', 'FID', 'GlobalID', 'Shape', 'Shape_Length', 'Shape_Area']
    Campos_origem = [campo for campo in campos_origem if campo not in campos_excluir]

    #verificar campos ausentes e criar na camada de destino.
    Campos_faltantes = [campo for campo in campos_origem if campo not in campos_destino]
    for campo in campos_faltantes:
    Campo_obj = arcpy.ListFields(camada_origem, campo)[0]
    arcpy.AddField_management(camada_destino, campo, campo_obj.type)
    print(f"Campo '{campo}' adicionado à camada de destino.")

    #apagar os registros existentes na camada de destino.
    arcpy.management.DeleteRows(camada_destino)
    print(f"Registros existentes na camada de destino '{camada_destino}' foram apagados.")

    # Usar um cursor de leitura na camada de origem.
    With arcpy.da.SearchCursor(camada_origem, campos_origem) as cursor_origem:
    # Usar um cursor de inserção na camada de destino.
    With arcpy.da.InsertCursor(camada_destino, campos_origem) as cursor_destino:
    for linha in cursor_origem:
    Cursor_destino.insertRow(linha)
    print(f"Registro copiado: {linha}")

    print(f"Todos os atributos da camada '{camada_origem}' foram copiados para '{camada_destino}', excluindo o campo 'ID'.")
    Else:
    print(f"A camada de destino '{camada_destino}' não existe.")
    Except Exception as e:
    print(f"Erro ao copiar atributos: {e}")

    if __name__ == "__main__":
    Copiar_atributos()


    Mesmo com as permissões já liberadas pelo ADM do banco, o código não consegue fazer essa operação nas camadas quando estão no banco, porém quando essa camada é movida para a máquina local, o código funciona.

    Foram inúmeras tentativas em relação à autorização, até com o perfil do ADM foi efetuada a execução do código e mesmo assim não funcionou. Já pesquisei sobre o erro tanto pelo GPT e outras IAS como também em outros sites e blogs, e o que encontro é falando que o erro é problema de permissão, porém a camada já está com todas as autorizações.

    Continue reading...

Compartilhe esta Página