千遍一律的multi-statement not allow解決方案對我沒用

multi-statement not allow 沒有設置批處理,解決方案網上很多,大部分基於以下 (本人基於springBoot開發)

(1)設置WallConfig裏面的multiStatementAllow 爲true

(2)DB URL追加&allowMultiQueries=true

以上詳細內網,網上大把不做贅述。但是對於本人沒用。

druid 的配置是基於Filter的,在設置wallConfig的時候事先查看wallConfig在druidDataSource 裏面的Filtter是否存在,如果已經存在那麼MySqlWallProvider 這個類在初始化的時候就會有可能初始化成另外一個沒有配置multiStatementAllow 爲true 的Filter,然後放在緩存裏面,後面就算你的wallConfig 再次被執行init函數也不再放到緩存裏面去.

下面是我在初始化wallConfig的時候打的斷點,明顯實現就已經存在了WallConfig,如果盲目的在設置一個WallConfig都是白搭,這就是我爲什麼採用了網上配置之後都是沒用的原因


下面這個是取druidDataSource的內容進行初始化


解決方法:在設置之前先判斷是都已經存在WallConfig,如果有,直接將現有的替換掉



DB的URL的參數還是得加上&allowMultiQueries=true , 原因網上很多,自行百度,歡迎提問



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章