InternalError: (pymysql.err.InternalError) (1205, u'Lock wait timeout exceeded; try restarting transaction')

在mysql innodb中使用事务,如果插入或者更新出错,一定要主动显式地执行rollback,否则可能产生不必要的锁而锁住其他的操作

我们在使用数据库的时候,可以使用contextlib,这样异常的时候自动回滚,而且最后都会执行关闭操作

from contextlib import contextmanager

engine = create_engine(EREBUS_DB_CONNECT_STRING, echo=True, pool_size=150, max_overflow=50, pool_recycle=300)
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine,
                                         expire_on_commit=True))

@contextmanager
def session():
    try:
       session = db_session()
       session.expire_on_commit = False
       yield session
    except:
        session.rollback()
    finally:
        session.close()

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001478651770626de401ff1c0d94f379774cabd842222ff000

InternalError: (pymysql.err.InternalError) (1205, u'Lock wait timeout exceeded; try restarting transaction')

时间: 2024-11-06 16:44:50

InternalError: (pymysql.err.InternalError) (1205, u'Lock wait timeout exceeded; try restarting transaction')的相关文章

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决

一.问题描述: 同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下: mysql> delete from facebook_posts where id = 7048962; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 二.问题处理 从报错信息看,应该是关于这条数据有事物未提交,锁等待超时了,下面我们就开始验证并解决问题 1.在sql执行期间,通

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

问题描述: 研发突然找我,遇到了mysql的 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,具体报错如下: org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) Caused by: java.io .IOException: java.sql.SQLException: Lock wait timeout exceeded;

数据库 1205 Error 'Lock wait timeout exceeded; try restarting transaction' on query

收到报警,mysql的从数据库在同步的过程出现问题,已停止同步. mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.199.50 Master_User: replication Master_Port: 3306 Connect

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决办法

一.问题描述: 同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下: mysql> delete from facebook_posts where id = 7048962; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 二.问题处理 从报错信息看,应该是关于这条数据有事物未提交,锁等待超时了,下面我们就开始验证并解决问题 1.在sql执行期间,通

执行 update操作的时候有报错 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> show full processlist; #查看问题的线程!!!! 找到异常进程的ID 然后kill 掉: mysql> kill xxxxxxx; #xxxxxx是ID号 然后再次执行update执作,问题解决!!

工作,忘记关闭数据库连接导致数据被锁住,解决这种( ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction)

mysql: 先show full processlist;查看sleep的id然后select * from information_schema.innodb_trx;找到记录的trx_mysql_thread_id与前一张表比对最后杀死kill 2542 注意:2542=id=trx_mysql_thread_id

mysql执行insert等语句报1205 Lock wait timeout exceeded try restarting transaction

mysql执行insert等语句是报如下错误: 1205 Lock wait timeout exceeded try restarting transaction 解决办法如下: 方法一:查看当前线程,是否有存在正在执行的你相关的语句,将其KILL  show processlist;  kill pid 方法二(方法一不行再执行):重启mysql数据库  service mysqld restart 注意:重启mysql会将在执行的线程全部kill

mysql死锁,等待资源,事务锁,Lock wait timeout exceeded; try restarting transaction解决

前面已经了解了InnoDB关于在出现锁等待的时候,会根据参数innodb_lock_wait_timeout的配置,判断是否需要进行timeout的操作,本文档介绍在出现锁等待时候的查看及分析处理: 在InnoDB Plugin之前,一般通过show full processlist(很难发现被锁的行记录问题所在)和show engine innodb status命令查看当前的数据库请求,然后再判断当前事务中锁的情况.随着mysql的发展,已经提供更加便捷的方法来监控数据库中的锁等待现象了.

mysql异常Lock wait timeout exceeded; try restarting transaction

mysql中使用update语句更新数据报错: Lock wait timeout exceeded; try restarting transaction. 这是因为你要更新的表的锁在其他线程手里,如果没有意外的话,很可能是在事务线程中持有该锁,办法就是杀掉这条线程. 用   show full processlist 查询当前数据库所有线程 用    SELECT * FROM information_schema.INNODB_TRX   查询数据库事务表,其中trx_mysql_thre