Consultor Eletrônico



Kbase 70: Erro 1422 no sistema e 129 na reindexação
Autor   Adriano Correa - CAT
Acesso   Público
Publicação   22/02/2001
O erro pode gerado quando tenta-se executar um assign em um campo que pertence a um índice. Os índices no progress tem a limitação de 188 bytes e os campos do formato texto podem ser maiores que essa limitação, principalmente porque o Progress não restringe texto pelo formato. No momento de dar o assign sobre o campo é gerado o erro.

O que pode causar:

Existia um bug no Progress versão 9, corrigido a partir do patch 9.1C25 (chamado Progress W303044058), onde o Progress permitia a inclusão do índice acima do limite, porém, durante um update gerava erro 129.
Outro problema são dados já com problemas no banco ou gerados índices acima do limite através das conversões. Uma vez que seja importado via bulkload, o índice vai apenas apresentar erro na reindexação, porém o banco funcionará atá executar um update no registro.

Correção:

Desativar todos os índices que possuem o campo que está estourando.
Alterar seu valor para um tamanho menor, comportado pelo índice.
Reindexar o banco.

Problema: Quando for índice primário?

Nesse caso, deverá ser criado outro índice primário NÃO ÚNICO, sem o campo que está apresentando o problema. Após a criação, desative o índice primário e execute os procedimentos.

Após sua conclusão, elimine o índice criado.

Procedimentos Úteis:

for each tabela where length(campo) > valor no-lock:
disp indice-primário length(campo).
end.

find tabela where indice-primario = ocorrencia.
update campo format "x(YYYY)". /* onde YYYY = length(campo) */