【发布时间】:2019-03-11 20:32:51
【问题描述】:
我在 Oracle MySQL DB 和 5.7 版本中创建了一个包含 4 列的表。 DB 中的总记录数为 4 912 442。现在我正尝试在 MySQL DB 中再插入 100 000 条记录。
我创建了简单的Spring Boot 应用程序并从文件中读取记录并插入到MySQL DB。
在记录数为 4912442 后将记录插入MySQL DB 时出现以下错误:
[WARN ] SqlExceptionHelper - SQL Error: 1205, SQLState: 40001
[ERROR] SqlExceptionHelper - Lock wait timeout exceeded; try restarting transaction
注意:MySQL 数据库由 MASTER-MASTER 集群在 2 个实例中使用。
即使出现上述错误,也执行以下命令:
SET GLOBAL innodb_lock_wait_timeout = 5000;
SET innodb_lock_wait_timeout = 5000;
【问题讨论】:
-
延长超时时间或分批加载数据,每批后提交。
-
执行了这些命令
SET GLOBAL innodb_lock_wait_timeout = 5000; SET innodb_lock_wait_timeout = 5000;,甚至得到了上述错误,并且还在mysql命令行提示符中使用了commit,并再次尝试插入并得到相同的错误。请帮我解决这个问题。 @戈登林诺夫 -
锁定超时可能意味着您在某处遇到了死锁。如果是这种情况,增加超时可能无济于事,但这完全取决于事务实际在做什么
-
我如何检查“死锁”你能帮我检查并解决这个问题吗?谢谢。 @apokryfos
标签: mysql spring-boot