背景
当初表结构设计不合理,表自增id达到2147483647,数据无法继续写入 ;重新设计新表将id int(10)更改为id bigint(20),后将原表改名。
执行语句:
RENAME TABLE t_crowd_user TO t_crowd_user_old_0606, t_crowd_user_tmp TO t_crowd_user;
卡表,现象如下
解决方案:
1、 查询影响的事务
MySQL [db_ex_crowd]> select * from information_schema.innodb_trx;
2、杀掉查询出的事务
kill 540619506;
kill 540636346;
kill 540609552;
kill 540544135;
kill 540578535;
3、再次执行语句,发现已执行成功
RENAME TABLE t_crowd_user TO t_crowd_user_old_0606, t_crowd_user_tmp TO t_crowd_user;
原因分析
代码程序设计不合理,没有合理释放mysql会话,导致只能等待mysql wait_timeout超时释放