hibernate数据库在进行多条数据插入数据库时报上述错误。查了很多解决方案,原因是代码中有事务没提交,导致锁,最后总结如下:
sql = "select pks.orgId,so.name,sum(ifnull(pks.result01,0)+ifnull(pks.result02,0)+ifnull(pks.result03,0)+ifnull(pks.result04,0)+ifnull(pks.result05,0)+ifnull(pks.result06,0)+ifnull(pks.result07,0)+ifnull(pks.result08,0)+ifnull(pks.result09,0)+ifnull(pks.result10,0)+ifnull(pks.result11,0)+ifnull(pks.result12,0)+ifnull(pks.result13,0)+ifnull(pks.result14,0)+ifnull(pks.result15,0)+ifnull(pks.result16,0)+ifnull(pks.result17,0)+ifnull(pks.result18,0)+ifnull(pks.result19,0)+ifnull(pks.result20,0)) as px,count(pks.orgId) as py,sum(ifnull(pks.result01,0)+ifnull(pks.result02,0)+ifnull(pks.result03,0)+ifnull(pks.result04,0)+ifnull(pks.result05,0)+ifnull(pks.result06,0)+ifnull(pks.result07,0)+ifnull(pks.result08,0)+ifnull(pks.result09,0)+ifnull(pks.result10,0)+ifnull(pks.result11,0)+ifnull(pks.result12,0)+ifnull(pks.result13,0)+ifnull(pks.result14,0)+ifnull(pks.result15,0)+ifnull(pks.result16,0)+ifnull(pks.result17,0)+ifnull(pks.result18,0)+ifnull(pks.result19,0)+ifnull(pks.result20,0))/count(pks.orgId) as pz,pks.surveytype "
+ " from pip_kpi_satisfaction pks,sys_organization so "
+ " where pks.orgid=so.id and pks.surveyyear='"+year+"' "
+ " group by pks.orgId,so.name,pks.surveytype";
List
方案一:重新启动服务器数据库,或者用备份数据库(简单粗暴,不想追根的朋友可以试一试,但是基于寻求问题本质的思想,建议了解方案二)
方案二:1、首先查看数据库当前所有线程情况mysql> show full processlist;
2、再去查看innodb的事务表INNODB_TRX,mysql> SELECT * FROM information_schema.INNODB_TRX\G;看一下里面是否有正在锁定的事务线程,如果有正在锁定的事务,将此表的ID与1中的对比,如果在1中此线程为sleep,说明此线程没有commit,卡住了。
3、mysql> kill xxx; 此处xxx为刚才事务线程的ID;
此时再去执行我们的sql语句就ok了。
方案三:方案二适用于mysql版本5.5以上,博主版本5.1,苦逼的发现并没有innodb_trx这张表,所以又有了方案三
1、首先查看数据库当前所有的线程情况mysql>show full processlist;
2、查看本机ip,将这张表所有和你本机IP相同的进程全部kill掉。