1、执行sql卡死
命令来检查和终止线程。
首先登录mysql,然后使用: show processlist; 查看当前mysql中各个线程状态。
- mysql> show processlist;
- +------+------+----------------------+----------------+---------+-------+-----------+---------------------
- | Id | User | Host | db | Command | Time | State | Info
- +------+------+----------------------+----------------+---------+-------+-----------+---------------------
- | 7028 | root | ucap-devgroup:53396 | platform | Sleep | 19553 | | NULL
- | 8352 | root | ucap-devgroup:54794 | platform | Sleep | 4245 | | NULL
- | 8353 | root | ucap-devgroup:54795 | platform | Sleep | 3 | | NULL
- | 8358 | root | ucap-devgroup:62605 | platform | query | 4156 | updating | update t_shop set |
以上显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.
然后运行kill命令,命令格式如下:
- kill id;
- - 示例:
- kill 8358
杀掉即可。
2、You can't specify target table 'enn_project_info' for update in FROM clause(不能在同一表中查询的数据作为同一表的更新数据)
错误语句:
出错原因:不能select同一张表的某些值再update这张表
正确语句:
解决办法:将select出来的结果再用中间表select一下,就规避了改问题
PS:该问题只存在MySql中