2 u012202806 u012202806 于 2016.05.05 19:59 提问

关于Java Hibernate 插入与更新同一张MySQL表不同字段,出现锁没被释放

关于Java Hibernate 插入与更新同一张MySQL表不同字段,出现锁没被释放,这个有可能是数据还没插入完或者插完了锁没有被释放,导致下一个更新操作不能执行,等待超时,这个情况出现在操作数据量大的时候!这个情况有哪几种解决方式?

[http-bio-8080-exec-3] [SQLErrorCodesFactory.:126] SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
org.springframework.dao.CannotAcquireLockException: Hibernate operation: could not execute native bulk manipulation query; SQL [INSERT INTO advert2elevator VALUES (null, 292, 531, 1, 0, NOW())]; Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:261)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339)
at com.challentec.cllm.db.dao.impl.GeneralDaoImpl.update(GeneralDaoImpl.java:90)
at com.challentec.cllm.service.impl.AdvertServiceImpl.insertEleAdRel(AdvertServiceImpl.java:309)
at com.challentec.cllm.service.impl.AdvertServiceImpl.buildEle2AdRel(AdvertServiceImpl.java:269)
at com.challentec.cllm.service.impl.AdvertServiceImpl.buildEleAdRelation(AdvertServiceImpl.java:286)
at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy32.buildEleAdRelation(Unknown Source)
at com.challentec.cllm.action.AdvertManagerAction.buildEleAdRelation(AdvertManagerAction.java:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)

1个回答

u012868901
u012868901   2016.05.09 15:11

你同时在使用这个表,会出现多个用户同时使用默认给第一个用户,其他去使用该表都会有表已被锁定给其他用户。可以等上个操作完成后再去操作这个表

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁? 数据库目前的锁机制有没有办法解决这种并发问题 关注者 13 被浏览 652 添加评论 分享 邀请回答 关注问题写回答
使用update触发器更新同一张表不同字段的数据
--order by:yujinsheng--time:2008-12-18create trigger UpdateAtypeon a for updateas declare @typeid intdeclare @id int--触发器语句中使用了两种特殊的表:deleted 表和 inserted 表,用于存储 DELETE 和 UPDATE 语句所影响的行的复本select @id=id
mysql更新死锁问题
mysql更新死锁问题 问题现象 同一时间点,一个商户下多个模板(模板id不同)同时更新; 券模板操作流水更新时发生死锁,报 Deadlock found when trying to get lock; try restarting transaction 错误 相关业务表信息 表:log_xx索引信息:log_no:分库分表全局唯一uk; merchant
通过java程序实现mysql 批量一个表的子段更新另一个表的字段
本想通过sql语句实现发现不行,参考语句如下: update mo_indexes a,mo_paf_indexmid_indexname b set a.index_name='2'  where a.index_id=b.index_id and b.index_id in(106749314,106749317); update mo_indexes set mo_ind
Mysql InnoDB 数据更新导致锁表
 一、数据表结构CREATE TABLE `jx_attach` ( `attach_id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DEFAULT NULL , `attach_name` varchar(255) NOT NULL, `cycore_file_id` varchar(255) DEFAULT NULL...
我认为写的最好的关于SQL Server更新锁和排它锁了
转载至:http://blog.csdn.net/zjcxc/article/details/27351779 一直没有认真了解UPDATE操作的锁,最近在MSDN论坛上看到一个问题,询问堆表更新的死锁问题,问题很简单,有类似这样的表及数据: CREATE TABLE dbo.tb(      c1 int,      c2 char(10),    
hibernate 插入数据mysql 表名关键字冲突
从14年做开发到现在,遇到了很多错误,解决了很多bug,有很多是当时百思不得其解的最后好热哦女鬼解决的,因为没有记录的好习惯,导致很多记载的丢失。大部分都是这一片,解决gub.txt,那一堆bug.txt.所以为了以后的长久发展,现在开始写博客。 1年没做web开发了,今天写一个仓库管理系统,用的ssh,遇到这样一个错误, org.springframework.dao.Invalid
两个事物 update同一张表出现的死锁问题 (转载)
粘贴会有各种格式显示问题,原文链接:点击查看原文 引言 近来做省一级计算机一级考试系统的时候,学生端进行大批量判分的时候,出现了这样的问题(事务(进程 ID 262)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。): 这个就是我们在代码中写了大批量的update语句,用trace P...
更新同一张表的整列字段
先需要先把需要更新的整列结果查询出来。 这里记录下mysql时间的函数:DATE_FORMAT( 字段名, '%Y-%m-%d %H:%i:%s' )  第二个参数是要转换的格式,因为我本来的格式中有毫秒。以下是举例:转换的sql :SELECT id AS dd, DATE_FORMAT( created, '%Y-%m-%d %H:%i:%s' ) created2 FROM pe_proje...
mysql对同一张表进行查询和赋值更新
You can't specify target table 'tb_user' for update in FROM clause ,mysql对同一张表进行查询和赋值更新