mysqldump无法导出特定的数据库,phpMyAdmin崩溃

我遇到了服务器上的数据库问题(注意:所有其他数据库都正常工作)。

一旦我尝试导出它与mysqldump我得到这个错误:

 # mysqldump -u root -pXXXXXXXXX databasename > /root/databasename.sql mysqldump: Couldn't execute 'show table status like 'apps'': Lost connection to MySQL server during query (2013) 

而且,phpMyAdmin在select这个数据库时会抛出一个错误,并立即注销。 但是,使用这个数据库的网站工作正常。 我也可以在MySQL shell中的名为“apps”的表上执行SELECT语句。

我试着重新启动MySQL守护进程以及REPAIR DATABASEREPAIR TABLE但问题仍然存在。 之前我遇到过这个问题,然后它就以某种方式消失了,而我却没有采取任何措施来解决问题。 现在,问题又回来了,我无法创build这个数据库的备份。

使用的软件

  • Debian 6.0.7 x64
  • MySQL 5.1.66-0

MySQL版本:

 mysql> SHOW VARIABLES LIKE "%version%"; +-------------------------+-------------------+ | Variable_name | Value | +-------------------------+-------------------+ | protocol_version | 10 | | version | 5.1.66-0+squeeze1 | | version_comment | (Debian) | | version_compile_machine | x86_64 | | version_compile_os | debian-linux-gnu | +-------------------------+-------------------+ 

phpMyAdmin错误信息 ,当切换到数据库

 SELECT `comment` FROM `phpmyadmin`.`pma_column_info` WHERE db_name = 'databasename' AND table_name = '' AND column_name = '(db_comment)' MySQL said: #2006 - MySQL server has gone away 

MySQL服务器最常见的原因(和修复)已经消失(错误2006)是:

服务器超时并closures连接。 怎么修:

 wait_timeout variable 

在my.cnfconfiguration文件中就够大了。

在Debian上:

  sudo nano /etc/mysql/my.cnf, 

设置wait_timeout = 600秒

 sudo /etc/init.d/mysql restart. 

wait_timeout的默认值可能是28800秒(8小时)左右。

第二件事是检查

服务器丢弃了一个不正确或太大的数据包 如果mysqld得到的数据包太大或不正确,则认为客户端出现问题并closures连接。 您可以通过增加my.cnf文件中的max_allowed_pa​​cket的值来增加最大数据包大小限制。

在Debian上:

  sudo nano /etc/mysql/my.cnf, max_allowed_packet = 64M 

然后

  sudo /etc/init.d/mysql restart. 

似乎是访问磁盘上的数据库文件的物理层面的问题。

我build议在尝试mysqldump之前尝试一下REPAIR TABLE ,以确保数据库表文件是。 检查也错误日志logging,以确保你正在发现正确的问题。 这将用于MyISAM表。 如果您正在使用InnoDB表,请先尝试一下:

 ALTER TABLE tablename ENGINE=MyISAM; REPAIR TABLE tablename; ALTER TABLE tablename ENGINE=InnoDB; 

命令语法的更多信息在这里: http : //dev.mysql.com/doc/refman/5.1/en/repair-table.html