首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新数据库错误:超过锁定等待超时

更新数据库错误:超过锁定等待超时
EN

Stack Overflow用户
提问于 2015-04-07 10:12:06
回答 1查看 697关注 0票数 0

我使用了MyBatis,我想更新数据库中的数据,insert查询可以工作,但是我在更新中有这个错误。

代码语言:javascript
复制
Error updating database.  Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction

SqlMapConfig.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost/test"/>
                <property name="username" value="root"/>
                <property name="password" value="***"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
      <mapper resource="config/UserMapper.xml"/>
    </mappers>
</configuration>

UserMapper.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserDao">
    <update id="update" parameterType="User">
        update user set adress_u = #{adress_u} where id_u = #{id_u}
    </update>
</mapper>  

Test.java

代码语言:javascript
复制
String adress_u = (String) request.getAttribute("adress_u");
int id_u = (Integer) request.getAttribute("id_u");

SqlSession session = MyBatisSqlSessionFactory.getSession();
User u = new User();
u.setId_u(id_u);
u.setAdress_u(adress_u);

session.update("dao.UserDao.update", u);
session.commit();
session.close();

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-07 11:26:18

您应该考虑通过设置InnoDB (默认为50秒)来增加innodb_lock_wait_timeout的锁等待超时值。

代码语言:javascript
复制
mysql> show variables like 'innodb_lock_wait_timeout';

您可以将其设置为更高的值并重新启动mysql:

代码语言:javascript
复制
SET GLOBAL innodb_lock_wait_timeout = 120; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29489078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档