2008-09-09 3 views
1

Donc, j'ai 2 instances de base de données, une pour le développement en général, une autre a été copiée du développement pour les tests unitaires.Impossible de supprimer de la base de données ...?

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

Lorsque je tente de supprimer d'une table particulière, avec par exemple:

delete from myschema.mytable where id = 555 

je suis la suivante réponse normale du test unitaire DB indiquant aucune ligne a été supprimée:

SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000

Cependant , la base de données de développement ne parvient pas à supprimer du tout avec l'erreur suivante:

DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0440N No authorized routine named "=" of type "FUNCTION" having compatible arguments was found. SQLSTATE=42884

Ma meilleure estimation est qu'il y a un déclencheur ou une vue qui a été ajoutée ou modifiée qui cause le problème, mais je n'ai aucune idée de la façon de résoudre le problème ... Quelqu'un at-il eu ce problème ou sait-il la racine du problème est?

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

Répondre

1

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

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

Il semble suggérer qu'une autre table a une clé étrangère pointant à la problématique, quand ce FK sur la l'autre table est supprimée, la suppression devrait fonctionner à nouveau. (Vous pouvez probablement recréer la clé étrangère aussi)

Cela aide-t-il?

0

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

0

est le type d'id compatible avec 555? Ou a-t-il été changé en un type non-entier?

Sinon, l'argument 555 disparaît-il d'une manière ou d'une autre (par exemple, si vous utilisez JDBC et que l'instruction préparée n'a pas été définie avant l'exécution de la requête)?

0

Pouvez-vous ajouter d'autres à votre question? Cette erreur ressemble à l'analyseur d'instruction SQL est très confus au sujet de votre déclaration. Pouvez-vous faire un select sur cette table pour la ligne où id = 555?

Vous pourriez essayer d'exécuter un RUNSTATS et REORG TABLE sur cette table, ceux-ci sont censés trier les tables bancales.

0

@castaway

Une sélection avec le même « où » état fonctionne très bien, mais pas supprimer. Ni runstats ni reorg table n'affecte le problème.

0

@castaway

En fait, nous venons de régler le problème, et en effet il est tout ce que vous avez dit (un collègue de travail a constaté que même page trop exacte).

La solution consistait à supprimer les contraintes de clé étrangère et à les ajouter de nouveau.

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 corruption de contrainte référentielle, et est en fait, ou soi-disant de toute façon, fixée dans une version ultérieure de db2 V9 (que nous sommes pas encore utilisé).

Merci pour l'aide!

0

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

Questions connexes