1

したがって、2 つのデータベース インスタンスがあります。1 つは一般的な開発用で、もう 1 つは単体テスト用に開発からコピーされたものです。

開発データベースで、私には理解できない何かが変更されました。何が違うのかを確認する方法がわかりません。

たとえば、特定のテーブルから削除しようとすると:

delete from myschema.mytable where id = 555

単体テスト DB から、行が削除されていないことを示す次の通常の応答が返されました。

SQL0100W FETCH、UPDATE、または DELETE の行が見つかりませんでした。またはクエリの結果が空のテーブルです。SQLSTATE=02000

ただし、開発データベースは次のエラーでまったく削除できません。

DB21034E コマンドは有効なコマンド行プロセッサー・コマンドではなかったため、SQL ステートメントとして処理されました。SQL 処理中に次の値が返されました: SQL0440N 互換性のある引数を持つタイプ "FUNCTION" の "=" という名前の許可ルーチンが見つかりませんでした。SQLSTATE=42884

私の最善の推測では、問題の原因となっている追加または変更されたトリガーまたはビューがあると思いますが、問題を見つける方法がわかりません...誰かがこの問題を抱えているか、ルートが何であるかを理解する方法を知っています問題のは?

(これは DB2 データベースであることに注意してください)

4

7 に答える 7

1

うーん、この質問に大神託を適用すると、次のことがわかりました。

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

別のテーブルに問題のあるテーブルを指す外部キーがあることを示唆しているようです。他のテーブルの FK が削除されると、削除が再び機能するはずです。(おそらく、外部キーも再作成できます)

それは何か役に立ちますか?

于 2008-09-10T00:37:44.630 に答える
0

@キャスト・アウェイ

同じ「where」条件の選択は、削除ではなく、問題なく機能します。runstatsもreorgtableも問題に影響を与えません。

于 2008-09-09T23:59:37.403 に答える
0

@キャスト・アウェイ

私たちは実際に問題を解決したところです。実際、それはまさにあなたが言ったことです (同僚もまったく同じページを見つけました)。

解決策は、外部キー制約を削除して再度追加することでした。

この件に関する別の投稿:

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

これは、問題が参照制約の破損であることを示しており、実際には、または何らかの形で db2 V9 の新しいバージョン (まだ使用していません) で修正されていることを示しています。

助けてくれてありがとう!

于 2008-09-10T00:45:27.263 に答える
0

開発データベースで開いているトランザクションがある可能性があります... SQL Serverで時々私を取得します

于 2008-09-09T21:53:22.543 に答える
0

id の種類は 555 と互換性がありますか? それとも非整数型に変更されたのでしょうか?

または、555 引数が何らかの形で欠落していませんか (たとえば、JDBC を使用していて、クエリを実行する前に準備済みステートメントの引数が設定されていない場合など)?

于 2008-09-09T22:05:39.677 に答える
0

質問にさらに追加できますか?このエラーは、SQL ステートメント パーサーがステートメントについて非常に混乱しているように聞こえます。そのテーブルで id = 555 の行を選択できますか?

そのテーブルで RUNSTATS と REORG TABLE を実行してみてください。これらは不安定なテーブルを整理するためのものです。

于 2008-09-09T23:47:41.897 に答える
0

Please check 1. your arguments of triggers, procedure, functions and etc. 2. datatype of arguments.

于 2008-10-02T16:37:20.063 に答える