问题描述:
插入数据没问题,新增列、删除索引、删表的时候都会死锁。
把死锁的进程 kill 掉之后恢复正常,但是只要进行以上操作就死锁,不能解决问题。
解决思路:
- 查询是否有正在执行的事务,发现总有几个事务,在进程中显示 sleep。 select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx;
- 查询相关后台脚本,发现是使用 django 写的后台脚本产生的这几个事务,解决方案在这里。
- 在第二步骤还没有解决的时候,可以先把这几个事务 kill 掉,再执行 DML。