MySQL数据库常见错误及解决方案

发表于:2017-3-16 10:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:51Testing软件测试网采编

分享:
  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、虚拟主机用户请联系空间商调整此参数。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号