我正在使用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)
正在消息队列中取值。如果我在没有UPDATE的情况下运行代码,则查询其运行正常。我以为cursor.close
会解决问题,但事实并非如此。我也重启了mysql。我已经经历了类似的问题,但没有一个能解决我的问题。任何帮助都表示赞赏。
我已将innodb_lock_wait_timeout
设置为50到63000
答案 0 :(得分:0)
由于种种原因,这是一个常见的问题。
{your_connection_object}.commit()
。例如:self.conn.commit()
要调试的命令如下(如果您不熟悉,请阅读更多关于它们的信息):
INNODB MONITOR OUTPUT:
SHOW ENGINE INNODB STATUS\G
当前正在运行的流程:
Show processlist;
杀死某个特定流程:
kill *process_id*;
目前正在运行的交易:
SELECT * FROM `information_schema`.`innodb_trx` ORDER BY `trx_started`;