Domanda

Quindi, ho 2 istanze del database, una è per lo sviluppo in generale, un'altra è stata copiata dallo sviluppo per i test unitari.

Qualcosa è cambiato nel database di sviluppo che non riesco a capire e non so come vedere cosa c'è di diverso.

Quando provo a eliminare da una tabella particolare, con ad esempio:

delete from myschema.mytable where id = 555

Ottengo la seguente risposta normale dal DB del test unitario che indica che nessuna riga è stata eliminata:

SQL0100W Non è stata trovata alcuna riga per FETCH, UPDATE o DELETE;oppure il risultato di una query è una tabella vuota.SQLSTATE=02000

Tuttavia, il database di sviluppo non viene eliminato affatto con il seguente errore:

DB21034E Il comando è stato elaborato come un'istruzione SQL poiché non era un comando valido del Processore della riga di comando.Durante l'elaborazione SQL è stato restituito:SQL0440N Non è stata trovata alcuna routine autorizzata denominata "=" di tipo "FUNCTION" con argomenti compatibili.SQLSTATE=42884

La mia ipotesi migliore è che ci sia qualche trigger o vista aggiunta o modificata che causa il problema, ma non ho idea di come procedere per trovare il problema...qualcuno ha avuto questo problema o sa come capire quale sia la radice del problema?

(nota che questo è un database DB2)

È stato utile?

Soluzione

Hmm, applicando il grande oracolo a questa domanda, ho pensato:

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

Sembra suggerire che un'altra tabella abbia una chiave esterna che punta a quella problematica, quando l'FK sull'altra tabella viene eliminato, l'eliminazione dovrebbe funzionare di nuovo.(Presumibilmente puoi ricreare anche la chiave esterna)

Questo aiuta qualcuno?

Altri suggerimenti

Potresti avere una transazione aperta sul db di sviluppo... che a volte mi porta su SQL Server

Il tipo di ID è compatibile con 555?Oppure è stato modificato in un tipo non intero?

In alternativa, l'argomento 555 in qualche modo scompare (ad es.se stai utilizzando JDBC e l'istruzione preparata non ha impostato i suoi argomenti prima di eseguire la query)?

Puoi aggiungere altro alla tua domanda?Questo errore sembra che il parser dell'istruzione SQL sia molto confuso riguardo alla tua affermazione.Puoi fare una selezione su quella tabella per la riga in cui id = 555?

Potresti provare a eseguire RUNSTATS e REORG TABLE su quel tavolo, quelli dovrebbero risolvere le tabelle traballanti.

@gettato via

Una selezione con la stessa condizione "dove" funziona perfettamente, ma non elimina.Né runstats né la tabella di riorganizzazione hanno alcun effetto sul problema.

@gettato via

In realtà abbiamo appena risolto il problema, e in effetti è proprio quello che hai detto (anche un collega ha trovato esattamente la stessa pagina).

La soluzione era eliminare i vincoli di chiave esterna e aggiungerli nuovamente.

Altro post sull'argomento:

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

Ciò indica che il problema è una corruzione del vincolo referenziale ed è effettivamente, o presumibilmente comunque, risolto in una versione successiva di db2 V9 (che non stiamo ancora utilizzando).

Grazie per l'aiuto!

Si prega di controllare 1.i tuoi argomenti di trigger, procedura, funzioni e così via.2.tipo di dati degli argomenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top