
我的服务器上的数据库出现了问题(注意:所有其他数据库都运行正常)。
一旦我尝试导出它,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”的表执行语句。
我尝试重新启动 MySQL 守护程序以及REPAIR DATABASE
,REPAIR TABLE
但问题仍然存在。我以前遇到过这个问题,后来它不知怎么就消失了,我没有做任何事情来解决这个问题。现在,问题又回来了,我根本无法创建这个数据库的备份。
使用的软件
- 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
答案1
MySQL 服务器消失(错误 2006)的最常见原因(及修复方法)是:
服务器超时并关闭了连接。如何修复:
查看
wait_timeout variable
my.cnf 配置文件足够大。
在 Debian 上:
sudo nano /etc/mysql/my.cnf,
设置 wait_timeout = 600 秒
sudo /etc/init.d/mysql restart.
wait_timeout 的默认值可能约为 28800 秒(8 小时)。
要检查的第二件事是
服务器丢弃了不正确或过大的数据包。如果 mysqld 收到过大或不正确的数据包,它会认为客户端出了问题并关闭连接。您可以通过增加 my.cnf 文件中 max_allowed_packet 的值来增加最大数据包大小限制。
在 Debian 上:
sudo nano /etc/mysql/my.cnf,
max_allowed_packet = 64M
然后
sudo /etc/init.d/mysql restart.
答案2
在物理层面访问磁盘上的数据库文件似乎存在问题。
我建议REPAIR TABLE
在尝试 mysqldump 之前先尝试一下,以确保数据库表文件是。还请检查 mysql 错误日志,以确保您发现正确的问题。这适用于 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