用select for update注意事項

2021-05-22 11:25:02 字數 463 閱讀 1297

今天犯了乙個特二的問題,過程如下:

希望首先用select... for update進行查詢,然後根據查詢的結果對記錄逐條的update(proxool連線池),結果發現db死鎖。查了半天最後發現

1. 在select... for update的時候用了executequery方法查詢,該方法即使setautocommit(true)也不會自動提交,因為會被認為不是乙個需要update的語句

2. 由於使用了proxool連線池,因此連線沒有被真正斷開,只是被池子**

3. proxool在close connection的時候不會自動提交(commit)

因此如果使用select ... for update的時候,一定要顯示的commit,這樣才不會造成死鎖。

ps: 需要特別注意的就是如果使用spring jdbctemplate這樣傻瓜的框架,這個問題不知道會不會有。估計很肯能會有。因此要特別特別的注意。

用Margin還是用Padding

用margin還是用padding 何時應當使用margin 需要在border外側新增空白時。空白處不需要背景 色 時。上下相連的兩個盒子之間的空白,需要相互抵消時。如15px 20px的margin,將得到20px的空白。何時應當時用padding 需要在border內測新增空白時。空白處需要背...

用Margin還是用Padding

用margin還是用padding這個問題是每個學習css高階時的必經之路。css邊距屬性定義元素周圍的空間。通過使用單獨的屬性,可以對上 右 下 左的外邊距進行設定。也可以使用簡寫的外邊距屬性同時改變所有的外邊距。w3school 邊界 margin 元素周圍生成額外的空白區。空白區 通常是指其他...

用yaml寫用例

第一步 安裝yaml,在執行裡輸入 pip install pyyaml 檢驗是否安裝成功,在pycharm裡輸入 import yaml 第二步 建立乙個file,字尾寫yaml或yml 在yml檔案裡寫入單個使用者名稱和密碼 開啟yml檔案並以字典的形式列印出來 執行結果 在yml檔案裡寫入多個...