4
回答
mybatis insert into select 丢失数据
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我在使用Mybatis执行insert into select 的时候出现了数据丢失,这是什么情况呢?下面是我的配置:

<!-- 保存15分钟统计数据 -->
     <insert id="insertStatisticsData" parameterType="com.nantian.nump.bean.State" >
        insert into ${indexCode}
            select t.IP as IP, t.COMPONENT_CODE AS COMPONENT_CODE, ${collectTime} as COLLECT_TIME, t.INDEX_CODE as INDEX_CODE,
                max(t.value) as MAX_VALUE, min(t.value) as MIN_VALUE, cast(avg(cast(t.value as decimal(15,2))) as decimal(15,2)) as AVG_VALUE
               from (select d.* from ${tabname} d, INDEX_ITEM i, MONITOR_UNIT m
                       where i.INDEX_CODE = (case locate('-', d.index_code) when 0 then d.index_code else substr(d.index_code, 1, locate('-', d.index_code)-1) end)
                              and i.UNIT_ID = m.UNIT_ID and i.CLASS_ID = m.CLASS_ID
                              and m.CHART_TYPE &lt;&gt; '0'
                                 and collect_time &lt; #{value} and collect_time &gt;= #{componentCode}) t
               group by t.IP, t.COMPONENT_CODE, t.INDEX_CODE
     </insert>

执行之后插入的数据比实际查询出来的少了几十条,数据是没有问题的,所有字段都是字符串,并且长度一致也没有超限。主键不冲突(如11.129.163.65和11.129.163.66,这其中有条数据就丢失了)。执行过程中没有出现异常。

请各位大神帮忙看看,谢谢!非常感谢。

举报
louxu623
发帖于1年前 4回/387阅
顶部