实验环境
window10专业版&&MySQL8.0
问题背景
1.表格中出现许多重复记录需要删除
2.删除过程中因数据量过大出现超时报错ERROR 2013 (HY000): Lost connection to MySQL server during query
代码
//new为删除后生成的新表,table为原表
create table new
select distinc* from table
出现的问题
数据量过大时会超时,报错ERROR 2013 (HY000): Lost connection to MySQL server during query
先查看各项超时的默认指标
show global variables like '%timeout%';
show global variables like 'max_allowed_packet';
进入C:\ProgramData\MySQL\MySQL Server 8.0目录修改my.ini文件(管理员模式打开)
按照网上方法将max_allowed_packet将默认值改大,这里我直接改成了1024M(激进改法)
并在mysqld下方添加要改大的timeout值(不添加则为默认值)
connect_timeout=1200
mysqlx_connect_timeout=1200
mysqlx_read_timeout=1200
mysqlx_write_timeout=9000
net_read_timeout=1200
net_write_timeout=9000
重新启动MySQL服务,再次试验后发现还是不行。多次试验各种改大timeout值后依然不成功,可能是数据量实在太大(数据长度7GB),因为课程项目赶中期答辩,只能在此埋个坑,选择了另一种方法:删除属性减少对比量。将十几个属性忍痛删至三个后(去重成功后再通过连接查询补回来),运行成功。难道这就是欲练此功必先自宫吗?哭了。