MySQL数据库常见错误及解决方案
作者:网络转载 发布时间:[ 2017/3/16 13:18:44 ] 推荐标签:数据库 MySQL
18.Lost connection to MySQL server during query
翻译:MySQL服务器失去连接在查询期间
原因
远程连接数据库是有时会有这个问题。MySQL服务器在执行一条sql语句的时候失去了连接造成的。
解决方案:
一般不需要怎么去处理,如果频繁的出现那么考虑改善硬件环境。
19.User 'red' has exceeded the 'max_updates' resource (current value: 500)
翻译:msql用户red已经超过了'max_updates'(大更新次数),'max_questions'(大查询次数),'max_connections'(大连接数),当前设定为500
原因
在mysql数据库的下有一个库为mysql,它其中有一个表为user这里面的纪录每一条都对应为一个mysql用户的授权。其中字段 max_questions max_updates max_connections分别记录着大查询次数 大更新数 大连接数,当目前的任何一个参数大于任何一个设定的值会产生这个错误。
解决方案:
独立主机用户可以直接修改授权表。修改完之后重启mysql或者跟新授权表,进入mysql提示符下执行FLUSH PRIVILEGES;
记得后面要有分号’;’
虚拟主机的用户如果总是出现这个问题可找空间商协商解决。
20.Too many connections (1040)链接过多
翻译:达到大连接数
原因
连接数超过了mysql设置的值,与max_connections 和wait_timeout 都有关系。wait_timeout的值越大,连接的空闲等待越长,这样会造成当前连接数越大
解决方案:
1.虚拟主机用户请联系空间商优化 MySQL 服务器的配置;
2.独立主机用户请联系服务器管理员优化 MySQL 服务器的配置,可参考:
修改 MySQL 配置文件 my.ini 或者 my.cnf 中的参数:
max_connections= 1000
wait_timeout = 10
修改后重启 MySQL ,如果经常性的报此错误,请做一下服务器的整体优化。
21.There is no such grant defined for user '%s' on host '%s'
错误编号:1141
原因
MySQL 当前用户无权访问数据库。
解决方案:
1、虚拟主机用户请联系空间商,确认给你提供的帐号是否有授权数据库的权限。
2、独立主机用户请联系服务器管理员,确认给您提供的数据库帐号是否有管理此数据库的权限。
22.Error on rename of '%s' to '%s' (errno: %d)
error.:1025
原因
请检查一下您的程序是否有修改数据库表名的语句。
解决方案:
1.请检查您的程序中哪些地方需要修改数据库表名;
2.如果您的实际应用确实需要修改到数据库表名的话,请联系空间商或者服务器管理员给您开放修改库名的权限和服务器本身是否正常。
23.Error reading file '%s' (errno: %d)
error.:1023
原因
数据库文件不能被读取。
解决方案:
1.虚拟主机用户请联系空间商查看数据库是否完好。
2.独立主机用户请联系服务器管理员检查一下 MySQL 本身是否正常, MySQL 是否可以读取文件,Linux 用户可以检查一下 MySQL 的数据库文件的属主是否正确以及本身的文件是否损坏。
24.Host '*****' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
error.:1129
原因
数据库出现异常,请重启数据库。
解决方案:
由于存在很多连接错误,主机'****'被屏蔽,虚拟主机用户请联系空间商处理,独立主机用户请联系服务器管理员,在 MySQL 的命令控制台下执行'mysqladmin flush-hosts'解除屏蔽即可,或者重启 MySQL 数据库。
25.dropping database (can't delete '%s', errno: %d)
error.:1009
原因
不能删除数据库文件,导致删除数据库失败。
解决方案:
1.检查您使用的数据库管理帐号是否有权限删除数据。
2.检查数据库是否存在。
26.Got error 28 from table handler
error.:1030
原因
数据库所在磁盘空间已满。
解决方案:
1.虚拟主机用户请联系空间商增加 MySQL 所在的磁盘空间或者清理一些无用文件;
2.独立主机用户请联系服务器管理员增加 MySQL 所在的磁盘空间或者清理一些无用文件
27.Can't create a new thread; if you are not out of available memory, you can consult the manual for a possible OS-dependent bug。
error.:11/35
原因
数据库服务器问题,数据库操作无法创建新线程。一般是两个原因:
1.服务器系统内存溢出。
2.环境软件损坏或系统损坏。
解决方案:
1.虚拟主机用户请联系下空间商数据库服务器的内存和系统是否正常。
2.独立主机用户请联系服务器管理员检查服务器的内存和系统是否正常,如果服务器内存紧张,请检查一下哪些进程消耗了服务器的内存,同时考虑是否增加服务器的内存来提高整个的负载能力。
28.Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client
error.:1251
原因
如果你升级 MySQL 到 4.1 以上版本后遇到以上问题,请先确定你的 MySQL Client 是 4.1 或者更高版本( Windows 下有问题你直接跳到下面看解决方法了,因为 MySQL 在 Windows 是 client 和 server 一起装上了的)。
解决方案:
1. Windows 平台
主要是改变连接 MySQL 的帐户的加密方式,MySQL 4.1/5.0 是通过 PASSWORD 这种方式加密的。可以通过以下两种方法得到解决:
1) mysql->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
2) mysql->UPDATE mysql.user SET Password=OLD_PASSWORD('new_password') WHERE Host='some_host' AND User='some_user';
2. Linux/Unix 平台
Linux 平台下首先确定是否安装过 MySQL 的客户端,这个用 rpm 安装很简单,Linux 代码为:
rpm -ivh MySQL-client-4.1.15-0.i386.rpm
然后在编译 php 的时候要加上:
--with-mysql=/your/path/to/mysql
一般情况下都可以解决。如果还出现这种错误,可以按照下面的方法来做:
mysql->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
mysql->UPDATE mysql.user SET Password=OLD_PASSWORD('new_password') WHERE Host='some_host' AND User='some_user';
29.Error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
error.:2002
原因
出现这个错误一般情况下是因为下面两个原因:
1.MySQL 服务器没有开启。
2.MySQL 服务器开启了,但不能找到 socket 文件。
解决方案:
1.虚拟主机用户,请联系空间商确认数据库是否正常启动。
2.独立主机用户,请检查一下 MySQL 服务是否已经开启,没有开启,请启动 MySQL 服务;如果已经开启,并且是 Linux 系统,请检查一下 MySQL 的 socket 的路径,然后打开 config.inc.php 找到
$dbhost = 'localhost'; 在 hostname 后面加冒号‘:’和 MySQL 的 socket 的路径。
比如 MySQL 服务器为 localhost
MySQL 的 socket 的路径为 /tmp/mysql.sock
那么改成如下:
$dbhost = 'localhost:/temp/mysql.sock';
30.Can't connect to MySQL server on 'localhost'
error.:2003
原因
MySQL 服务没有启动,一般是在异常的情况下 MySQL 无法启动导致的,比如无可用的磁盘空间,my.ini 里 MySQL 的 basedir 路径设置错误等。
解决方案:
1.检查磁盘空间是否还有剩余可用空间,尽量保持有足够的磁盘空间可用。
2.检查 my.ini 里的 basedir 等参数设置是否正确,然后重新启动下 MySQL 服务。
31.Lost connection to MySQL server during query
error.:2013
原因
数据库查询过程中丢失了与 MySQL 服务器的连接。
解决方案:
1.请确认您的程序中是否有效率很低的程序,比如某些插件,可以卸载掉插件,检查一下服务器是否正常;
2.服务器本身资源紧张,虚拟主机用户请联系空间商确认,独立主机用户请联系服务器管理员,检查一下服务器是否正常。
32.Got a packet bigger than 'max_allowed_packet' bytes
错误编号:1153
原因
调整了 Mantis 的上传附件的大小却没有调整 MySQL 的配置文件。
解决方案:
1、独立主机用户请按照以下方法调整:
查找 MySQL 的配置文件(my.cnf 或者 my.ini)
在 [mysqld] 部分添加一句(如果存在,调整其值可以):
max_allowed_packet=10M
重启 MySQL 服务可以了。这里设置的是 10MB。
2、虚拟主机用户请联系空间商调整此参数。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南