Fala pessoal, boa tarde.
Estou enfrentando um erro no alteryx na saída do update "Primary key is required for update option", isso também acontece mesmo quando não tenho nenhum registro para ser atualizado (nesse cenário apenas a saída de insert recebe registros).
Informações importantes:
1. Estou usando SQL SERVER;
2. Conexão do tipo OleDB (vi alguns casos na comunidade informando que esse tipo de conexão as vezes perde a referência de PK);
Pontos já verificados:
1. Conexão da saída (conexão|||banco.schema.tabela) e permissão no banco de dados;
2. A coluna PK está sendo passada para o output com o mesmo nome que tenho na tabela destino e com o tipo de dados correto (SQL: BIGINT e Alteryx: Int64), essa coluna é identity 1:1;
3. Todos os registros que passam no update existe no banco de dados;
4. Já recriei a tabela, inseri novos registros, não tenho problema de duplicidade;
5. Já criei nova conexão ODBC e também recriei minha conexão OleDB;
6. Recriei o input que chama a tabela que receberá o update;
Alguém tem alguma ideia do que pode ser?
Desde já agradeço a ajuda
Fala meu mano!
Tenta isso:
Just for others who look for solution :
odbc:DSN=COnnectionName|||SchemaName.TableName -> This is required for Updates/Deletes
odbc:DSN=COnnectionName|||TableName -> Insert was working without schema name
Even though we have hard coded the schema name in ConnectionName, it does not pickup for Updates. The error was also misleading. I am sure its a bug in Alteryx. It should not work differently for different type.
Douglas, conforme falei no grupo do whatsapp.
A solução proposta não funcionou, ao alterar o tipo de conexão para "quick connection", parte dos registros foram atualizados, porém me deparei com outro erro e ao analisar mais profundamente, identifiquei que havia apenas uma linha com a PK nula, o que eu não tinha identificado antes via browser, pois pela quantidade de registros essa 1 linha não aparecia na análise de nulos gerado por esse componente.
Agradeço sua colaboração,
@jfscarvalho boa tarde tudo bem?
Pelo que eu vi na sua imagem você está usando um BLOCK UNTIL DONE antes de gravar na sua tabela.
Geralmente usamos isso quando estamos lendo uma tabela e tentando gravar na mesma tabela.
O BLOCK UNTIL DONE muitas vezes é utilizado da maneira errada.
O que eu acho e que tá ocorrendo é o seguinte, você está lendo a tabela e antes que ela feche (COMMIT) ele tá tentando gravar na mesma e isso vai dar erro.
Tenta fazer o seguinte, na saída 1 do seu BLOCK UNTIL DONE coloca uma saída para gerar um YXDB
Na saída 2 do seu BLOCK UNTIL DONE coloca a saída pro seu banco de dados.
Veja se funciona.
Abraços
Carlos,
O problema não era exatamente a conexão e sim uma linha que estava coma a PK nula, ao alterar o tipo de conexão para "quick connection", parte dos registros foram atualizados, porém me deparei com outro erro e ao analisar mais profundamente, identifiquei que havia apenas uma linha com a PK nula, o que eu não tinha identificado antes via componente browser, pois pela quantidade de registros total essa 1 linha não aparecia na análise de nulos gerado por esse componente.
Agradeço sua colaboração,
Estou com o mesmo problema na Versão: 2022.1.1.40869, porém na Versão: 2021.2.2.45235 funciona normalmente.
Espero que nas próximas versões esse problema seja solucionado.
Obrigada pelo feedback, @luis-romano.
@CristianoJ, sabe dizer se esse é um problema conhecido?