我正在使用 python 调用 mysql 中的表并执行查询。我收到错误:
_mysql_exceptions.OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')
tbl_1 是一个表,我必须在其中更新 isprocessed 列。
cursor.execute('UPDATE tbl_1 SET isprocessed=1 where name='+body)
cursor.close()
cursor1 = db.cursor()
cursor1.execute('SELECT name,height,age,weight from tbl_1 where name='+body)
正文正在消息队列中获取值。如果我在没有更新查询的情况下运行代码,则其运行良好。我认为 Cursor.close 会解决问题,但事实并非如此。我还重新启动了mysql。我遇到过类似的问题,但没有一个能解决我的问题。感谢任何帮助。
我已将 innodb_lock_wait_timeout
设置为从 50 到 63000
最佳答案
由于多种原因,这是一个常见问题。
- 当您运行程序(或文件)时,不要在另一个终端中打开 MYSQL。这可能会导致读写冲突。
- 如果您使用 django 以及 MYSQL 直接执行(使用游标),请确保使用以下命令提交事务:
{your_connection_object}.commit()
。例如:self.conn.commit()
调试命令如下(如果您是新手,请阅读有关它们的更多信息):
INNODB 监控输出:
SHOW ENGINE INNODB STATUS\G
当前正在运行的进程:
Show processlist;
终止特定进程:
kill *process_id*;
当前正在运行的事务:
SELECT * FROM `information_schema`.`innodb_trx` ORDER BY `trx_started`;
关于python - 超过锁等待超时;尝试使用 python 更新 mysql 表时尝试重新启动事务'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22008561/