2011-08-24 18 views
6

da questa query: select * from tabellaErrore sql driver sql ibm db2. Non trovare il nome della tabella?

ottengo il seguente messaggio di errore:

Errore: DB2 SQL Errore: SQLCODE = -204, SQLSTATE = 42704, sqlerrmc = webuser.table, DRIVER = 4.8 .87 SQLState: 42704 ErrorCode: -204 Errore: DB2 SQL Errore: SQLCODE = -727, SQLSTATE = 56098, sqlerrmc = 2; -204; 42704; webuser.table, DRIVER = 4.8.87 SQLState: 56098 ErrorCode: -727

Qualsiasi suggerimento su come indagare sul problema è molto apprezzato.

risposta

5

A prima vista, DB2 non sta trovando il nome di tabella sotto lo schema webuser o lo schema dell'utente corrente connesso non corrisponde allo schema per la tabella. Prova:

select * from webuser.table 

Se non funziona, allora probabilmente non esiste sotto il webuser schema, in modo da cercare di scoprire cosa schema che esiste sotto.

Spesso è possibile trovare le informazioni per sql error codes nel IBM DB2 infocenter o sulla riga di comando DB2 UDB in questo modo:

db2 ? SQL0100 

è possibile cercare qualsiasi errore in questo modo:

db2 ? SQLnnnnn 

dove nnnnn è il codice di errore.

Spesso è inoltre possibile trovare informazioni sul codice di errore sql da db2 effettuando una ricerca su google senza includere lo - poiché google rimuove il termine con un trattino in primo piano rispetto ai risultati della ricerca. Quindi, cercare sql code 204 e non sql code -204.

In genere è possibile trovare un elenco di tutte le tabelle sotto sysibm.tables o syscat.tables a seconda del tipo di sistema (z/OS o UDB) in esecuzione e in base a se l'amministratore di db2 ha accesso limitato a tale catalogo tabelle.

Se si esegue contro un'istanza UDB, provare:

select tabschema, tabname from syscat.tables 

sto assumendo, naturalmente, che non si aspettava il tavolo per essere nominato table. Penserei che sia una parola limitata sotto db2 o lo standard SQL-92.

Se si sta eseguendo una stored procedure che esegue quella query, è possibile che non venga visualizzato l'errore vero dalla query. Le stored procedure spesso restituiscono un codice di errore diverso rispetto a una query all'interno della stored procedure, a meno che non siano programmate per rilevare e restituire sqlcode e sqlstate dalla query stessa.

Inoltre, vedo che si sta ottenendo un codice sql di -727, con un codice messaggio di 2.La documentazione per che dice:

An error occurred during implicit system action type action-type . Information returned for the error includes SQLCODE sqlcode , SQLSTATE sqlstate and message tokens token-list . 

dove l'azione-tipo è 2: implicita preparare di un'istruzione SQL dinamica nella cache

Questa informazione di errore è meno semplice e più sintonizzati per un amministratore di database. Potrebbe essere utile, ma prima proverei gli altri suggerimenti. Può significare che alcuni pacchetti non sono legati al database (come quelli del tuo driver di rete) o che certe autorizzazioni nel database non sono corrette o un fixpack non è stato applicato correttamente e mancano le procedure del database. Tuttavia, potrebbe anche essere causato dal -204 e solo essere un errore successivo.