我在Oracle MySQL
DB和5.7版中创建了一个包含4列的表。数据库中存在的总记录为4 912442。现在我正尝试在MySQL
数据库中再插入10万条记录。
我已经创建了一个简单的Spring Boot
应用程序,并从文件中读取了记录并插入到MySQL
DB中。
在记录计数4912442之后将记录插入MySQL
DB中时遇到以下错误:
[WARN ] SqlExceptionHelper - SQL Error: 1205, SQLState: 40001
[ERROR] SqlExceptionHelper - Lock wait timeout exceeded; try restarting transaction
注意:MASTER-MASTER群集在2个实例中使用MySQL数据库。
并在以下命令下执行,甚至出现上述错误:
SET GLOBAL innodb_lock_wait_timeout = 5000;
SET innodb_lock_wait_timeout = 5000;
答案 0 :(得分:0)
Lock wait timeout
通常在事务更新/插入正在等待已被某些其他事务锁定的数据行上时发生。
可能的原因可能是大量数据,不适当的表设计,约束等。
以下一些解决方法应该可行:
检查锁定等待时间show variables like 'innodb_lock_wait_timeout
的当前值;并将其更新为120
更高的值。
或您可以在此行中将其永久设置在/etc/my.cnf中,但请确保重新启动MySQL,如果无法重新启动,则只需运行查询SET GLOBAL innodb_lock_wait_timeout = 120;
[mysqld]
innodb_lock_wait_timeout=120