今天修改了批量插入業務sql後 報StackOverflowError錯誤(druid 解析sql時遞歸層級太深) 批量插入使用的foreach 一次插入5000條 只是插入時添加幾個字段不至於 把插入條數改成100條測試 報語法錯誤 檢查sql發現錯誤如下
(#{name,jdbcType=VARCHAR},
(#{note,jdbcType=VARCHAR},
複製的時候不小心把括號也複製了 看來以後還是括號單獨鑽一行
由此得知報StackOverflowError可能是sql太長或語法問題導致druid遞歸解析層級太深
數據庫限制導致mysql批量插入失敗
內容大致如下
sqlserver 對條數和參數有限制 分別1000和2100
mysql對包大小有限制可以通過max_allowed_packet配置 默認4M 該限制針對所有sql語句 包括查詢到的結果集