异常:java.sql.SQLException: The total number of locks exceeds the lock table size

使用语句更新表数据,记录数:1485676条,出现错误:

UPDATE T_Role_Mail SET F_ID=F_ID+?

错误:

java.sql.SQLException: The total number of locks exceeds the lock table size
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318) ~[mysql-connector-java-5.1.16.jar:na]
	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:147) ~[c3p0-0.9.2.1.jar:0.9.2.1]
	at com.morefuntek.mergertool.MergerRoleMailTable.addMailId(MergerRoleMailTable.java:97) [bin/:na]
	at com.morefuntek.mergertool.MergerRoleMailTable.beforeMerger(MergerRoleMailTable.java:37) [bin/:na]
	at com.morefuntek.mergertool.task.MergerTaskAdatapter.beforeMerger(MergerTaskAdatapter.java:21) [bin/:na]
	at com.morefuntek.mergertool.MainMerger.beforeMerger(MainMerger.java:107) [bin/:na]
	at com.morefuntek.mergertool.MainMerger.main(MainMerger.java:172) [bin/:na]

原因:

mysql没有足够的空间来存储所有的行锁,执行你的查询。唯一的解决办法是修改innodb_buffer_pool_size并重启MySQL。默认的配置只有8M,这太小了,不能用来做任何事情。如果需要一个临时的解决办法,就是减少一次性操作的记录数,比如将10000行减少到5000行。

mysql官方链接:http://bugs.mysql.com/bug.php?id=15667

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值