首页 > 数据库 > MySQL > 正文

MySQL数据库常见问题的原因以及解决方案

2024-07-09 22:43:44
字体:
来源:转载
供稿:网友

http://www.VeVb.com/mail近日武林网小编为了方便客户在遇到一些常见MySQL数据库问题无法解决,借此机会就总结一下MySQL数据库常见三大问题的原因以及解决方案,如下:

第一,使用MySQL时的一些常见错误
  1.MySQL server has gone away
  常见的原因是服务器超时了并且关闭了连接。缺省地,如果没有事情发生,服务器在 8个小时后关闭连接。你可在启动mysqld时通过设置wait_timeout变量改变时间限制。
  如果mysqld得到一个太大或不正常的包,它认为客户出错了并关闭连接。
  2.Can't connect to [local] MySQL server
  通常意味着没有一个MySQL服务器运行在系统上或当试图连接mysqld服务器时,你正在使用一个错误的套接字文件或TCP/IP端口。
  检查(使用ps)服务器上是否有一个名为mysqld的进程启动
  如果一个mysqld进程正在运行,可以通过尝试这些不同的连接来检查服务器
  shell> mysqladmin version
  shell> mysqladmin variables
  shell> mysqladmin -h `hostname` version variables
  shell> mysqladmin -h `hostname` --port=3306 version
  shell> mysqladmin -h 'ip for your host' version
  shell> mysqladmin --socket=/tmp/mysql.sock version
  注意hostname命令使用反引号“`”而非正引号“'”;这些导致hostname输出(即,当前主机名)被代替进mysqladmin命令中。
  3.Host '...' is blocked错误
  Host 'hostname' is blocked because of many connection errors.
  Unblock with 'mysqladmin flush-hosts'
  这意味着,mysqld已经得到了大量(max_connect_errors)的主机'hostname'的在中途被中断了的连接请求。在max_connect_errors次失败请求后,mysqld认定出错了(象来字一个黑客的攻击),并且阻止该站点进一步的连接,直到某人执行命令mysqladmin flush-hosts。
  缺省地,mysqld在10个连接错误后阻塞一台主机。你可以通过象这样启动服务器很容易地调整它:
  shell> safe_mysqld -O max_connect_errors=10000 &
  
第二,Too many connections错误
  意味着已经有max_connections个客户连接了mysqld服务器。
  如果你需要比缺省(100)更多的连接,那么你应该重启mysqld,用更大的 max_connections 变量值。
  
  1.Out of memory错误
  mysql: Out of memory at line 42, 'malloc.c'
  mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
  ERROR 2008: MySQL client ran out of memory
  注意,错误指向了MySQL客户mysql。这个错误的原因很简单,客户没有足够的内存存储全部结果。
  首先检查你的查询是否正确

  2.Packet too large错误
  
  一个MySQL客户或mysqld服务器得到一个比max_allowed_packet个字节长的包
  可以通过用mysql --set-variable=max_allowed_packet=8M指定一个更大的缓冲区来启动客户程序。
  
  3.The table is full错误
  这个错误发生在内存临时表变得比tmp_table_size字节大时。
  Commands out of sync in client错误
  正在以错误的次序调用客户函数!

  4.Ignoring user错误
  Found wrong password for user: _user@some_host'">'some_user@some_host'; Ignoring user
  这意味着在mysqld启动时或在它再次装载权限表时,它在user表中找到了一个有一个无效口令的条目。结果,条目简单地被权限系统忽略。

  5.Table 'xxx' doesn't exist错误
  数据库和表名件是区分大小写的!可以用SHOW TABLES检查你在当前数据库中有哪个表。
  
第三,MySQL总是崩溃
  首先你应该试着找出问题mysqld守护进程是否死掉或你的问题是否与你的客户有关。你可以用mysqladmin version检查你的mysqld服务器正常执行了多长时间,如果mysqld死了,你可以在文件“mysql-data-directory/'hostname'.err”中找到其原因。


其他,MySQL数据库常见问题的原因以及解决方案可能还有些不完整,还是希望对广大客户或者朋友有些作用,同时也欢迎大家来武林网有问必答补充。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表