解决MySql Error Code: 2006

本文介绍了解决MySQL在导入大量数据时出现服务器离线错误的方法,通过调整max_allowed_packet及timeout参数来避免导入过程中的异常中断。

再用SQLYog进行10w用户数据sql导入的时候,出错,后查看日志找到错误代码为:

MySQL 服务器已离线

后经过google发现时mysql设置的问题.

这个问题是因为MySql的默认max_allowed_packet过小所致,修改大一些即可

max_allowed_packet = 100M

另外,可以增加一下两个参数,来扩大相应时间

interactive_timeout=28800000

wait_timeout=28800000


或者

如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错:

Error occured at:2014-03-24 11:42:24
Line no.:85
Error Code: 2006 - MySQL server has gone away

最终找到原因,原来是MySQL导入大批量数据的时候超出了默认允许最大的数据包所以就提示2006 - MySQL server has gone away

于是找到my.cnf,在[mysqld]加入:

代码如下复制代码
max_allowed_packet=300M
wait_timeout=200000
interactive_timeout = 200000

意思是最大允许数据包300M,等待超时/活动失效时常200000秒,重启MySQL

代码如下复制代码
[root@lizhong 20140323]# /etc/init.d/mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL. SUCCESS!

再重新导入,一切正常!



MySQL 中出现 `unknown column ‘ranking’ in ‘field list’` 错误,通常意味着查询语句中引用了表中不存在的列。以下是一些可能的解决办法: ### 检查列名拼写 要确保查询语句中的列名 `ranking` 拼写正确,包括大小写(在某些 MySQL 配置中,列名是区分大小写的)。例如,错误的拼写会导致该错误,正确检查后修改即可。示例代码如下,假设要查询 `students` 表中的 `ranking` 列: ```sql -- 错误示例 SELECT rankking FROM students; -- 正确示例 SELECT ranking FROM students; ``` ### 检查表结构 确认 `ranking` 列确实存在于目标表中。可以使用 `SHOW COLUMNS` 语句查看表的结构,示例如下: ```sql SHOW COLUMNS FROM your_table_name; ``` 这里的 `your_table_name` 是你查询的表名。如果执行该语句后发现 `ranking` 列不存在,那么需要通过 `ALTER TABLE` 语句添加该列。例如: ```sql ALTER TABLE your_table_name ADD COLUMN ranking INT; ``` ### 检查表别名和作用域 如果查询中使用了表别名,要保证列名使用了正确的别名引用。例如: ```sql -- 错误示例 SELECT t.ranking FROM students t WHERE t.id = 1; -- 若表别名使用错误,会导致找不到该列 -- 正确示例 SELECT s.ranking FROM students s WHERE s.id = 1; ``` ### 检查视图 如果查询是基于视图的,要确保视图的定义中包含 `ranking` 列。参考引用中提到视图的相关规则,如果创建视图的子查询 SQL 语句中使用了别名,则对视图进行操作时也只能使用别名 [^2]。检查视图定义的示例如下: ```sql SHOW CREATE VIEW your_view_name; ``` 根据结果确认视图中是否包含 `ranking` 列,若不包含则需要修改视图定义。 ### 检查数据库和表的选择 要确保当前使用的数据库和表是正确的。可以使用 `USE` 语句切换数据库,使用 `SHOW TABLES` 查看当前数据库中的表。示例如下: ```sql -- 切换数据库 USE your_database_name; -- 查看当前数据库中的表 SHOW TABLES; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值