2008-09-09 156 views
1

因此,我有2個數據庫實例,一個用於一般開發,另一個從開發中複製用於單元測試。無法從數據庫中刪除...?

在開發數據庫中發生了一些變化,我無法弄清楚,我不知道如何看看有什麼不同。

當我試圖從特定表中刪除,有例如:

delete from myschema.mytable where id = 555 

我得到以下從單元測試DB表示沒有行正常的反應被刪除:

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

然而,開發數據庫根本無法刪除,但出現以下錯誤:

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

我最好的猜測是有一些觸發器或視圖被添加或更改導致問題,但我不知道如何去解決問題......有沒有人有這個問題,或知道如何弄清楚什麼是問題的根源是什麼?

(注意,這是一個DB2數據庫)

回答

1

嗯,應用大預言到這個問題,我想出了:

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

這似乎表明,另一個表具有在有問題的一個外鍵指向,當FK上其他表被刪除,刪除應該再次工作。 (推測你也可以重新創建外鍵)

這有幫助嗎?

0

您可能對開發數據庫...這讓我有時SQL服務器

0

上的ID與555兼容類型打開的事務?或者它已被更改爲非整數類型?

或者,555參數是否會丟失(例如,如果您正在使用JDBC並且準備好的語句在執行查詢之前沒有設置其參數)?

0

你可以添加更多的問題嗎?這個錯誤聽起來像是sql語句解析器對你的語句非常困惑。你可以在該表上選擇id = 555的行嗎?

你可以試着在那個表上運行一個RUNSTATS和REORG TABLE,這些應該是爲了整理不好的表。

0

@castaway

一個選擇具有相同「其中」條件下工作得很好,只是沒有刪除。 runstats和reorg table都不會對問題產生任何影響。

0

@castaway

我們實際上只是解決了這個問題,而且的確是你說的去做(同事發現完全相同的頁面太)。

解決方案是放棄外鍵約束並重新添加它們。

關於這個問題的另一篇文章:

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

這表明問題是參照約束腐敗,其實,還是所謂反正,固定在DB2 V9的更高版本(我們是尚未使用)。

感謝您的幫助!

0

請檢查 1.您的觸發器,程序,函數等的參數 2.參數的數據類型。