MySQL服务器端客户端常见错误
客户端
1.ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query
使用select 一个大表,query的过程中被主库kill掉会出现下面错误
2.ERROR 2006 (HY000): MySQL server has gone away
如果超过wait_timeout或者interactive_timeout时,再使用这个连接时
admin>show databases;
insert values()()如果数据量的大小超过了max_allow_packets的大小,也会报
ERROR 2006 (HY000): MySQL server has gone away
服务器端error log中报错:
141111 19:30:16 [Warning] Aborted connection 1280 to db: 'deal' user: 'admin' host: '10.0.0.0' (Got timeout reading communication packets)
3.ERROR 1045 (28000): Access denied for user 'test'@'10.0.0.0' (using password: YES)
- ping一下要连接数据库,看能否ping通;
- 使用mysql client尝试连接一下,注意使用-h -u -P -p分别指定host、user、port,例如mysql -hdbxx -utest -P5002 -p,然后回车,输入密码;
- 强调一下,第2步的时候使用-p之后回车,然后输入密码,而不是把密码作为参数直接输入,这样一个安全,二是避免了密码中转义字符引起的问题;
4.ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.1' (111)
这种情况下,说明还没有连接上mysql,尝试ping下数据库,看是否能ping通;其次看下mysql server是否启动;
5.ERROR 1040 (HY000): Too many connections
当前服务器端的连接数超过了设置的最大连接数max_connections
6.Host 'host_name
' is blocked because of many connection errors.Unblock with 'mysqladmin flush-hosts'
如果client在连接server的时候,出错次数超过server设置的max_connect_errors(不包括错误的密码尝试),则会报这个错误;这个一般是网络存在问题,如果确认网络存在偶尔性的,可以增大max_connect_errors并执行flush-hosts
7.Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was *** millisecond ago。
1) mysql服务器默认的“wait_timeout”是8小时(也就是默认的值默认是28800秒),也就是说一个connection空闲超过8个小时,mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。
2) 如果客户端连接设置了socketTimeout=1000(即1s), 当客户端连接发送一个慢查询(超过1s)时,客户端连接socket会断开,同样会报“Communications link failure” 错误
8.Could not create connection to database server. Attempted reconnect 3 times. Giving up。
1)如上错误常见情况是后端mysql服务不可用,请确认后端mysql服务正常以及连接使用的配置参数正确;
2)还有一种情况是业务使用了Atlas,业务连接串中配置了重连(autoReconnect=true),当连接池中连接损坏(如上7中描述了可能损坏的情况),业务再次使用该损坏连接的时候会发起重连(JDBC内部机制)并尝试三次,但是报如上错误(确认连接参数无问题)。这是由于jdbc内部重连上后会发送“SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ” 请求,而该请求在0.0.2版本的Atlas中不支持(可升级0.1解决),只会影响当前请求,不影响这个连接下一次的使用。
服务器端
1. [Warning] Aborted connection 104566 to db: 'test' user: 'root' host: 'localhost' (Got an error reading communication packets)
很明显, MySQL认为读到了一个错误的包,并将该连接Aborted了, 在errlog中记下这个warning, 通过show global status like '%Aborted_clients%' 可以看到Aborted_clients 值的增加。
出现该warning主要是因为客户端没有正常调用mysql_close()退出。我们针对php、python、perl做测试如下:
1) python 代码如下:
运行该程序, 在另一个Term中kill 或者 kill -9 该进程, 在MySQL errlog中均会出现如上warning
运行该程序, 然后按下 crtl + c 中断该程序, 在MySQL errlog中没有出现如上waring
2)php 代码如下:
运行该程序,在另一个Term中kill 或者 kill -9 该进程, 在MySQL errlog中均会出现如上warning
运行该程序, 然后按下 crtl + c 中断该程序, 在MySQL errlog中出现如上waring
3)perl 代码如下:
运行该程序,在另一个Term中kill 或者 kill -9 该进程, 在MySQL errlog中均会出现如上warning
运行该程序, 然后按下 crtl + c 中断该程序, 在MySQL errlog中出现如上waring
注: 通过测试,发现python、php、perl 对 crtl + c (同 kill -2) 处理方式不同,仅python 对 kill -2 信号处理调用了 mysql_close() 正常关闭MySQL连接。
2.[Warning] Access denied for user 'test'@'localhost' (using password: YES)
服务器端报此错误,主要是客户端连接的时候使用了错误的密码。
创建测试用test, 并赋予test库的增删改查权限:
1) 在终端使用错误的密码连接MySQL结果如下:
可以看到此时客户端报用户无权限连接 ERROR, 而此时服务器端errlog中会出现如上的warning
2) 在终端连接没有权限的database 结果如下:
此时客户端报没有权限连接MySQL库, 而服务器端errlog中没有任何warning出现
3.[Warning] Aborted connection 104643 to db: 'test' user: 'root' host: 'localhost' (Got timeout reading communication packets)
主要是客户端连接在wait_timeout 时间范围内都无操作,服务器端会断开此连接
1)首先我们设置wait_timeout值为10秒
2) 等待超过10s后服务器端报错如下:
3) 再在MySQL客户端中发起操作会报ERROR : MySQL server has gone away
4.[Warning] Aborted connection 104660 to db: 'test' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)
此warning主要是因为客户端向服务器端传送了大于max_allowed_packet 指定大小的包所导致。测试如下:
1) 首先将数据通过mysqldump命名将数据导出
默认mysqldump会将数据导出成多个insert into语句, 每个语句大小接近1M
2)设置max_allowed_packet = 524288
3) 再使用MySQL命令将hostname.sql 导入结果如下:
服务器errlog中会报如上warning
MySQL服务器端客户端常见错误相关推荐
- mysql主从同步常见错误以及解决方法总结
前言 在发生故障切换后,经常遇到的问题就是同步报错,数据库很小的时候,dump完再导入很简单就处理好了,但线上的数据库都150G-200G,如果用单纯的这种方法,成本太高,故经过一段时间的摸索,总结了 ...
- windows系统上安装mysql操作过程及常见错误处理
1.下载mysql免安装版本,下载地址:http://dev.mysql.com/downloads/mysql/ 解压到自己的目录 2.编辑配置文件: 新建一个文本文件,修改名称及后缀为my.ini ...
- python与mysql数据库连接中常见错误
1 1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81' solve: You need utf8mb4, not utf8, when ...
- mysql安装时的英文_安装MySQL遇到的常见英文翻译
安装MySQL遇到的常见英文翻译: choose this configuration type to create the optimal server setup for this machine ...
- MySQL的配置方法以及数据库配置常见错误及其解决方法
第一部分.MySQL的配置方法: 以下为笔者整理的mysql 5.5 安装配置教程笔记.通过逐一界面分析,解决大家在配置MySQL数据库时可能存在的疑惑. 首先给出MySQL下载地址:MySQL :: ...
- MySQL数据库常见错误及解决方案
MySQL数据库常见错误及解决方案 1 MySQL无法重启问题解决Warning: World-writable config file '/etc/my.cnf' is ignored 原因 今天帮 ...
- ubuntu 安装nginx,php,mysql。常见错误解决
2019独角兽企业重金招聘Python工程师标准>>> sudo apt-get install -y libpcre3 libpcre3-dev zlib1g-dev ./conf ...
- hadoop-HA集群搭建,启动DataNode,检测启动状态,执行HDFS命令,启动YARN,HDFS权限配置,C++客户端编程,常见错误
本篇博文为整理网络上Hadoop-HA搭建后出来的博客,参考网址为:http://blog.chinaunix.net/uid-196700-id-5751309.html 3. 部署 3.1. 机器 ...
- redhat下安装mysql 5.6.20,解压zip包,查看已经安装过的mysql,卸载rpm安装包,安装mysql服务器端和客户端,修改mysql用户名,登陆mysql,启动关闭mysql
1 将相关的 mysql rpm 包上传到 redhat 上 2 我的电脑是Redhat 6.*版本,所以这里使用上面一个 3 解压zip包 4 安装以下几个 rpm MySQL-clie ...
最新文章
- Ubuntu12.04下解决sudo apt-get update警告Duplicate sources.list entry
- 什么MySQL语句在存储过程体中是合法的
- pbl和sbl_谈PBL和SBL教学法结合模式
- 水面反光如何拍摄_拍摄水面反射的创意
- IDEA中引入和启动TOMCAT的本质
- sqlmap 基本使用教程--个人笔记
- UE mac版16.10.0.22破解
- 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)
- Pacman基本使用
- 第九周项目六 委派任务
- 宝宝起名神器小程序源码_支持多种流量主模式
- 编写高质量的代码——从命名入手
- 下肢静脉曲张的病因具体有哪些?
- Autodesk的照片建模云服务—Autodesk ReCap 360 photo
- 三菱FX5U系列PLC内置模拟量使用方法和输入输出信号接线
- MS COCO数据集输出数据的结果格式(result format)和如何参加比赛(participate)(来自官网)
- 这些支付的负面记录,分分钟影响你的贷款
- JavaScript 数据类型的转换
- Android Studio 安装app 时 INSTALL_FAILED_CONFLICTING_PROVIDER错误的方法
- 熵权法(客观赋权法)
热门文章
- 机器学习-数据集类型04
- webpack 3 零基础入门教程 #4 - webpack 的配置文件 webpack.config.js
- 手动添加ubuntu服务
- 河南省第十届省赛 Plumbing the depth of lake (模拟)
- MacOS中使用QT开发iOS应用
- oracle:delete和truncate
- Xcode中添加代码块的方式
- SSH2+Daoz项目中的分页查询
- bash: ./make_ext4fs: No such file or directory 错误解决方法
- php屏幕共享功能,利用无线投屏技术同屏直播,精彩随时共享