Pergunta

Então, eu tenho 2 instâncias de banco de dados, um é para o desenvolvimento em geral, outro foi copiado de desenvolvimento para testes de unidade.

Algo mudou no desenvolvimento de banco de dados que eu não consigo descobrir, e eu não sei como ver o que é diferente.

Quando tento excluir a partir de uma determinada tabela, com por exemplo:

delete from myschema.mytable where id = 555

Recebo a seguinte resposta normal a partir da unidade base de dados de teste que indica que nenhuma linha foi excluída:

SQL0100W Nenhuma linha foi encontrada para BUSCAR, UPDATE ou DELETE;ou o resultado de uma consulta é uma tabela vazia.SQLSTATE=02000

No entanto, o desenvolvimento de banco de dados não consegue eliminar a todos com o seguinte erro:

DB21034E O comando foi processado como uma instrução SQL, porque não foi uma Linha de Comando válido do Processador de comandos.Durante o processamento de SQL é retornado:SQL0440N Não autorizado rotina denominada "=" do tipo "FUNÇÃO" tendo compatível argumentos foi encontrado.SQLSTATE=42884

Meu melhor palpite é que há algum gatilho ou ver o que foi adicionado ou alterado que está causando o problema, mas eu não tenho nenhuma idéia de como ir sobre encontrar o problema...alguém já teve esse problema ou sabe como descobrir o que a raiz do problema?

(observe que este é um banco de dados DB2)

Foi útil?

Solução

Hmm, aplicando-se o grande oracle para esta pergunta, eu vim com:

http://bytes.com/forum/thread830774.html

Ele parece sugerir que uma outra tabela tem uma chave estrangeira apontando para o problemático, quando o FK em outra tabela é interrompida, a exclusão deve funcionar novamente.(Provavelmente, você pode re-criar a chave estrangeira também)

Isso ajuda qualquer?

Outras dicas

Você pode ter uma transação aberta no dev db...que me deixa às vezes em SQL Server

É o tipo de identificação compatível com o 555?Ou foi alterado para um tipo inteiro não?

Como alternativa, o 555 argumento, de alguma forma, vá em falta (por exemplo,se você estiver usando o JDBC e o preparado declaração de não obter seus argumentos definido antes de executar a consulta)?

Você pode adicionar mais para a sua pergunta?Que erro soa como a instrução sql analisador é muito confuso sobre a sua instrução.Você pode fazer um select na tabela para a linha onde id = 555 ?

Você pode tentar executar uma RUNSTATS e REORGANIZAÇÃO de TABELA em tabela, aqueles que é suposto resolver vacilante tabelas.

@náufrago

Uma escolha com a mesma "onde" condição funciona muito bem, mas não eliminar.Nem runstats nem reorganização da tabela de ter qualquer efeito sobre o problema.

@náufrago

Nós, na verdade, acabou de resolver o problema, e na verdade é apenas o que você disse (um colega de trabalho encontrou que a mesma página, também).

A solução foi soltar as restrições de chave estrangeira e adicioná-las novamente.

Outro post sobre o assunto:

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=208277&tstart=-1

O que indica que o problema é uma restrição de referência de corrupção, e de fato é, ou supostamente, de qualquer maneira, corrigido em uma versão posterior do db2 V9 (que ainda não estamos usando).

Obrigado pela ajuda!

Por favor, verifique 1.seus argumentos de gatilhos, procedimentos, funções e etc.2.tipo de argumentos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top