2015-12-07 1 views
1

Je suis en train d'exécuter des tâches via Datastage avec le connecteur DELETE puis INSERT. Je vais avoir plusieurs emplois à défaut de cette erreur:SQLState 02000 Aucune ligne n'a été trouvée pour FETCH, UPDATE ou DELETE

DB2_Connector: DB2 reported: SQLSTATE = 02000 Native Error Code = 100, Msg = IBM[CLIDriver][DB2/NT64] SQL01000W No row was found for FETCH, UPDATE, or DELETE 

Quand je lance l'instruction delete directement Data Studio dans DB2, il donne cette même erreur, donc je sais que c'est une erreur de DB2, pas une erreur de Datastage.

Y a-t-il un moyen de supprimer le message dans Datastage ou lorsque j'exécute l'instruction dans DB2, est-ce que je peux empêcher ce message d'apparaître? Il arrête maintenant mes travaux DS avec une erreur fatale et ne continue pas à charger.

Il doit y avoir un moyen de désactiver le message. Je sais dans SQL Server si aucune ligne n'est trouvée, elle ne donne pas cette erreur, elle dit simplement zéro ou ne retourne pas les enregistrements mais dans DB2 cette erreur arrive et je ne suis pas sûr s'il y a un moyen de la désactiver .

+0

Voir si cela aide: http://www-01.ibm.com/support/docview.wss?uid=swg21418587 – mustaccio

+0

Salut et merci. J'ai suivi les instructions, mais je pense que lorsque la déclaration frappe Db2, elle est toujours en train d'être erronée. J'ai essayé de supprimer le message du journal ainsi que de le rétrograder à info, mais comme c'est une erreur Db2, c'est toujours une erreur. – Chris

Répondre

2

D'abord, vous semblez être confus au sujet précisément ce qu'est un erreur est, et quel un message est.

  • Une erreur survient lorsque quelque chose ne va pas. Un message est quand un morceau de logiciel est assez aimable pour vous faire savoir que quelque chose s'est mal passé.

Il s'ensuit que la suppression d'un message n'a aucune incidence sur l'erreur réelle. Votre logiciel n'échoue pas à cause du message, votre logiciel échoue parce que quelque chose ne va pas. Recevoir un message à ce sujet est en fait une bonne chose: l'alternative serait que votre logiciel échoue sans que vous ayez la moindre idée de ce qui ne va pas. Supprimer les erreurs ou les ignorer, c'est comme se cacher la tête dans le sable: on finit toujours par se retrouver en tant que repas. Donc, ce que vous devez faire disparaître est l'erreur, pas le message.

Ce qui signifie que vous devez comprendre ce que vous avez mal fait. Heureusement, vous avez le message qui vous donne un indice sur ce que vous avez fait de mal, mais vous devez garder à l'esprit que les messages sont parfois trompeurs.

SQLState 02000 n'est pas une erreur, c'est un avertissement. (Et notez que DB2_Connector ne dit pas ERROR!!!1!:, il dit DB2 reported:.) Heureusement, JDBC émet des avertissements lorsqu'il détecte des situations pouvant indiquer des erreurs; Il y a beaucoup de logiciels qui ignorent les avertissements de JDBC (en se cachant la tête dans le sable pour vous, c'est gentil), mais heureusement, DB2_Connector les signale.

Ce que cela signifie est que l'une des deux choses va mal:

  • Soit votre hypothèse qu'il est acceptable si aucune ligne ne trouve est faux, et le fait qu'aucune ligne n'a été trouvé est la cause de votre problème, ce qui signifie que vous devez vous assurer que certaines lignes sont trouvées, ou

  • Votre hypothèse que c'est correct si aucune ligne n'est trouvée est correcte, dans ce cas l'avertissement signalé n'a absolument rien à voir avec le problème à portée de main, de sorte qu'il peut être ignoré en toute sécurité, et vous devez regarder le problème ailleurs.