首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超过了锁等待超时;尝试使用python更新mysql表时尝试重新启动事务‘错误

超过了锁等待超时;尝试使用python更新mysql表时尝试重新启动事务‘错误
EN

Stack Overflow用户
提问于 2014-02-25 08:33:10
回答 1查看 3K关注 0票数 0

我使用python在mysql中调用一个表并执行查询。我收到了一个错误:

代码语言:javascript
复制
_mysql_exceptions.OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')

tbl_1是一个表,我必须在其中更新isprocessed列。

代码语言:javascript
复制
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)

主体正在接受消息queue.If中的值,我运行代码时不需要更新查询,它运行良好。我原以为cursor.close会解决这个问题,但它没有解决,我也重新启动了mysql。我也经历过类似的问题,但没有一个能解决我的issue.Any帮助。

我将innodb_lock_wait_timeout设置为50到63000

EN

回答 1

Stack Overflow用户

发布于 2017-06-03 07:25:27

由于种种原因,这是一个常见的问题。

  1. 当您运行您的程序(或文件)时,不要在另一个终端中打开MYSQL。这可能导致读写冲突。
  2. 如果使用django以及MYSQL直接执行(带有游标),请确保使用命令{your_connection_object}.commit()提交事务。例:self.conn.commit()

要调试的命令如下(如果您是新手,请阅读有关它们的更多信息):

INNODB监视器输出:

代码语言:javascript
复制
SHOW ENGINE INNODB STATUS\G

当前正在运行的进程:

代码语言:javascript
复制
Show processlist;

杀死一个特定的过程:

代码语言:javascript
复制
kill *process_id*;

当前运行的事务:

代码语言:javascript
复制
SELECT * FROM `information_schema`.`innodb_trx` ORDER BY `trx_started`;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22008561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档