- 方法一:如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器
- 方法二:如果使用exit退出,那么在退出之后会关闭容器,可以使用下面的流程进行恢复用docker restart命令重启容器
使用docker attach命令进入容器
推荐用第一种
推荐用第一种
方案来源于:https://blog.csdn.net/zmx729618/article/details/51259135
上周在写递归遍历比较两棵树的差异的需求:代码在遍历查询后update db的时候遇到一个mysql的报错: ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
google了下,发现文章大同小异,但是真正解决我问题的是上面链接中的文章,
结论是:mysql 默认都是自动提交的,可以用select @@autocommit 查看是否为自动提交,如果不是的话, set global autocommit=1;
定位过程:发现实际的数据量并不大,而update的时候,进程状态一直是updating卡住的。
原来autocommit 这个参数配置值为0, 这个设置导致原来的update语句如果没有commit的话,你再重新执行update语句,就会等待锁定,当等待时间过长的时候,就会报ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction的错误。(因为我是递归update,而配置又是autocommit=0, 所以等待锁定)
临时解决方案: 赶紧commit刚才执行的update语句,之后 set global autocommit=1;
最终解决方案:出现该问题大多数是因为出现死锁或者connection/session没有关闭造成的,去检查执行该sql的语句,检查是否有finally{}中关闭连接