我遇到了服务器上的数据库问题(注意:所有其他数据库都正常工作)。
一旦我尝试导出它与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 DATABASE和REPAIR TABLE但问题仍然存在。 之前我遇到过这个问题,然后它就以某种方式消失了,而我却没有采取任何措施来解决问题。 现在,问题又回来了,我无法创build这个数据库的备份。
使用的软件
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_packet的值来增加最大数据包大小限制。
在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