除錯事務時的小坑

2022-02-28 10:08:40 字數 542 閱讀 5797

.net2.0開始,對事務有了直接的支援,我們不再需要com+事務來進行事務管理,transactionscope成了我經常使用的類。通常說來,我對事務的提交、回滾都是很清楚的,但今天除錯的時候,卻出了一點意外。我向程式裡面新添了乙個方法a,a被乙個事務中的方法所呼叫,也就是說,a的執行是事務的乙個步驟(它有很多的前置步驟)。a的裡面有乙個很簡單的查詢,返回乙個我需要的id。我對自己的資料很熟悉,知道這個id返回值應該是多少。可我在單步除錯的時候,驚訝的發現這個id不是我想象中的值。我擷取到執行時的查詢字串,放在sql server查詢分析器裡執行,發現自己的記憶沒問題。

這個時候我就覺得很奇怪,同一句查詢為什麼在**中執行和在查詢分析器裡會有不同結果呢?事實上,這兩個不同的結果都是「正確」的。資料在程式執行到斷點的時候,已經被同一事務中的前置操作改變了;而當我在查詢分析器中執行的時候,由於超時事務已經回滾了,所以我看到的還是那個老的資料。

多說一句,.net預設的事務超時時間是一分鐘,這對於我們的除錯很多時候是不夠的,很容易超時。可以通過在web.config的配置節或者transactionscope的建構函式進行設定。

配置mysql環境時的幾個小坑

首先我們使用wget 進入解壓目錄後.scripts mysql install db執行安裝命令失敗提示缺少依賴 安裝libaio dev依賴包 sudo apt get install libaio dev首先切換超級使用者進入mysql,執行 grant all privileges on t...

使用pandas聚類時的小坑

之前執行測試好好的程式,忽然出現了報錯,還是merge時候的型別錯誤,這個bug有點蹊蹺。進行聚類之後計算平均值與方差 tmp df df object1 float groupby object1 head 20 groupby object1 float agg mean sum reset i...

redis事務的坑

最先參考文章 後來發現 redis事務不能使用 transactional標記,刪除方法無法工作,刪不掉。set操作,儲存能生效。嚴重影響了資料一致性。解決方案 redistemplatetrans.multi long removenumber removeset redisgroupkey,re...