Question

Donc, j'ai 2 instances de base de données, on est pour le développement en général, un autre a été copié à partir de développement pour les tests unitaires.

Quelque chose a changé dans le développement de la base de données que je ne peux pas comprendre, et je ne sais pas comment faire pour voir ce qui est différent.

Lorsque j'essaie de supprimer à partir d'une table en particulier, avec par exemple:

delete from myschema.mytable where id = 555

J'ai le normal de la réponse de l'appareil d'essai DB indiquant aucune ligne n'a été supprimé:

SQL0100W Aucune ligne n'a été trouvé pour le RÉCUPÉRER, mettre à JOUR ou de les SUPPRIMER;ou le résultat d'une requête est une table vide.SQLSTATE=02000

Cependant, le développement de la base de données ne parvient pas à supprimer le message d'erreur suivant:

DB21034E La commande a été traitée comme une instruction SQL parce que ce n'était pas une Commande valide Processeur en Ligne de commande.Au cours de traitement SQL il a renvoyé:SQL0440N Pas autorisé routine nommée " = " "type de FONCTION" compatible arguments a été trouvé.SQLSTATE=42884

Ma meilleure supposition est qu'il existe une certaine détente ou de la vue qui a été ajouté ou modifié qui est à l'origine du problème, mais je n'ai aucune idée de la façon de trouver le problème...quelqu'un a eu ce problème ou sait comment comprendre quelle est la cause du problème?

(notez que c'est une base de données DB2)

Était-ce utile?

La solution

Hmm, en appliquant le grand oracle à cette question, je suis venu avec:

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

Il semble qu'à l'autre table a une clé étrangère pointant à la problématique, lorsque que FK sur l'autre table est supprimée, la suppression de devrait fonctionner à nouveau.(Je suppose que vous pouvez re-créer la clé étrangère ainsi)

Est-ce que c'tout?

Autres conseils

Vous pourriez avoir une transaction ouverte sur le dev db...qui me met parfois sur SQL Server

Est le type de id compatible avec 555?Ou l'a été changé pour un non-type entier?

Sinon, ne le 555 argument de toute façon aller manquantes (par ex.si vous êtes à l'aide de JDBC et l'instruction préparée n'a pas obtenu son argumentation avant l'exécution de la requête)?

Pouvez-vous ajouter plus à votre question?Cette erreur sonne comme l'instruction sql analyseur est très confus au sujet de votre déclaration.Pouvez-vous faire un select sur la table pour la ligne where id = 555 ?

Vous pourriez essayer de lancer un "RUNSTATS" et de RÉORGANISER le TABLEAU sur cette table, ceux qui sont censés faire le tri des déglingués tables.

@castaway

Un select avec la même condition "where" fonctionne très bien, juste ne pas supprimer.Ni "runstats" ni réorganisation de la table ont aucun effet sur le problème.

@castaway

Nous avons effectivement viens de résoudre le problème, et en effet c'est juste ce que vous avez dit (un collègue a trouvé exactement la même page).

La solution a été de laisser tomber les contraintes de clés étrangères et les rajouter.

Un autre post sur le sujet:

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

Ce qui indique que le problème est une contrainte référentielle de la corruption, et est en fait, ou soi-disant de toute façon, résolu dans une version ultérieure de db2 V9 (dont nous ne sommes pas encore à l'aide).

Merci pour l'aide!

Veuillez vérifier 1.vos arguments de déclencheurs, de procédure, les fonctions et les etc.2.type d'arguments.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top