當我們在上個星期五發布時,我收到了一個我沒有接受的錯誤。該錯誤信息是:NHibernate IStatelessSession CreateQuery失敗
could not execute update query[SQL: delete from dbo.MyTable where col1=? and col2=? and col3=? and col4=? and col5=?]
我的C#代碼如下:
var hqlDelete = "DELETE MyTable m WHERE m.Col1 = :var_1 AND m.Col2 = :var_2 AND m.Col3= :var_3 AND m.Col4 = :var_4 AND m.Col5= :var_5";
var deletedEntities = session.CreateQuery(hqlDelete)
.SetString("var_1", variable1)
.SetString("var_2", variable2)
.SetString("var_3", variable3)
.SetString("var_4", variable4)
.SetString("var_5", variable5)
.ExecuteUpdate();
transaction.Commit();
session.Close();
現在,正如我所說,在接受測試時錯誤沒有觸發。另外,當我使用生產數據庫(來自我的開發人員座位的代碼)進行測試時,它的工作也沒有問題。
當我調用Web服務並向其發佈「測量」時,會觸發該代碼。唯一的區別是我在測試時調用服務,在生產時另一家公司將測量結果發送到Web服務。
我認爲這可能與會話/事務的數量有關,但這並不能解釋爲什麼變量在錯誤消息中顯示爲?
。
任何想法?有更多的信息可以提供,所以你可以幫助我解決這個問題嗎?
編輯:InnerExeption是
{"Transaction (Process ID 68) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction."}
首先,顯示完整的異常堆棧..上面的那部分將只是一個開始...真實和有趣的信息將遵循... –
正如Radim所指出的,您的錯誤信息不足。它只是告訴它不能做什麼。通常它有一些原因。記錄異常的詳細信息,包括其「InnerException」。如果您沒有更多,請添加log4net,將其配置爲至少記錄警告和更高級別,然後NHibernate應該發佈關於失敗的詳細日誌。 –
好的謝謝。我希望這是一些典型的錯誤或什麼。調試很難,因爲我必須遵循一個發佈計劃(我可以每個月發佈一次),因此只能接受測試。所以即使添加log4net,我也要等一個月才能看到錯誤。 – Tjab