解决: Error Code: 2013. Lost connection to MySQL server during query

执行SQL语句:

update  table_C, table_A  set table_C.colC = table_A.colA where table_A.anotherId= table_C.anotherId

 

实现:

更新table_C中的字段col_C中的数据,数据来自table_A中的字段col_A,通过非主键一一映射。

即更新表中字段的数据,数据来自另一张表中的字段。

 

报错: 

Error Code: 2013. Lost connection to MySQL server during query  600 sec

 

运行环境:

MySql Workbench 6.1

Windows 7, Service Pack 1

操作服务器上的数据库,不是本地数据库

两张表都有几万条数据

 

解决:

一.修改服务器超时限制

二.修改服务器接受的数据包大小限制

三.优化SQL语句

 

一.

依次进入Mysql -- Edit  -- SQL Editor

修改keep-alive interval 和 read time out 为1800(原来是600),如图1



 图1

 

 二.

定位到Workbench安装目录,

找到my-large.ini 和 my-huge.ini (使用通配符 my*ini 查找)

修改my-large.ini 和 my-huge.ini 中的 max_allowed_packet 为16M,如图2



 图2

 

网上很多文章中说要修改 my.ini 中的 max_allowed_packet ,但本例中的 my.ini 中 没有max_allowed_packet 这个字段 (不排除可以自行添加的可能性)

 

 

 三.

SQL语句改为:

update table_C  set table_C.col_C =

(select  table_A.col_A from table_A   where table_A.anotherid = table_C.anotherid)

 

注意:

异常进程也会影响执行结果

#查看正在执行的进程

show full processlist;

#强制结束一场进程

kill 123456

 

 参考网文

jason-zhang. 数据库中将一张表的某些字段更新到另外一张表中. http://my.oschina.net/JasonZhang/blog/94231

 

php_sir. MySQL 错误 2013 Lost connection to MySQL server during query. http://blog.sina.com.cn/s/blog_5f66526e0100t8hj.html

 

Quincylk. mysql max_allowed_packet查询和修改. http://blog.csdn.net/quincylk/article/details/19401695

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值