首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误2006 (HY000):已经消失-数据库、表或MySQL是否已损坏?

错误2006 (HY000):已经消失-数据库、表或MySQL是否已损坏?
EN

Stack Overflow用户
提问于 2017-01-28 14:27:39
回答 1查看 1K关注 0票数 1

在Debian 8下的mysql 5.5.53 (innodb数据库)上

另一位mysql新手正在艰难地学习mysql。真正困难的方法。任何提供的帮助都将是极好的。我的网站离线了,这对我来说真的很重要。问题:我不知道我是有一个坏了的数据库,表还是mysql本身坏了。n mysql在一个数据库崩溃,但在另一个数据库没有崩溃。我使用以下命令登录到mysql

代码语言:javascript
复制
mysql -u root -p

一旦进入,我输入

代码语言:javascript
复制
use drupal;
show tables;

效果很好。然后我输入

代码语言:javascript
复制
use civicrm;
show tables;

我得到了

代码语言:javascript
复制
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...

然后我试一试

代码语言:javascript
复制
 mysqlcheck -u root --password civicrm

它将开始列出civicrm的所有表,但它在大约4个表崩溃后命中名为log_civicrm_*的表

代码语言:javascript
复制
 Got error: 2013: Lost connection to MySQL server during query when executing 'CHECK TABLE ... '

索引文件ib_logfile1和ib_logfile0都会重新构建。我已将my.cnf设置为

代码语言:javascript
复制
key_buffer      = 512M
max_allowed_packet  = 64M
thread_stack        = 3M
thread_cache_size       = 8

我试图转储数据库civicrm,但它在启动时失败了。除了我尝试使用的名为log_civicrm_*的表之外,我可以转储几乎所有的表

代码语言:javascript
复制
innodb_force_recovery=5

没有变化。文件/var/log/mysql/error.log显示

代码语言:javascript
复制
170127 21:48:27 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.53-0+deb8u1'  socket: '/var/run/mysqld/mysqld.sock'  
port: 3306  (Debian)
02:48:28 UTC - mysqld got signal 11 ;

代码语言:javascript
复制
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f23402d6f40): is an invalid pointer
Connection ID (thread ID): 9
Status: NOT_KILLED

任何从civicrm删除表的尝试都会失败,并显示2006错误。我在这里有什么选择?数据库是否需要修复,是一个表,还是其他什么东西坏了,我下一步该去哪里修复它?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-02-02 02:30:10

找到了问题所在。日志表损坏。给可怜的mysql带来极大的混乱。只要使用CiviCRM表,它就会崩溃。

要解决问题,

查找civicrm数据库的存储位置。如果在典型的*nix发行版上使用mysql,可能是/var/lib/mysql/civicrm

关闭mysql (停止服务mysql )

创建一个新目录(mkdir logtables),现在将所有日志表移动到该目录(mv civicrm.log_* logtables)

清除error.log文件,这样您就可以在每次启动mysql时看到发生了什么。要执行此操作,请执行cat /dev/null >/var/ log / mysql /error.log (假设mysql服务器日志文件位于/var/log/mysql,您需要在发出该命令之前对其进行检查)

启动mysql (服务mysql启动)

如果您没有root权限,那么当您尝试移动日志表时,操作系统将会崩溃。建议使用sudo (例如sudo mv civicrm.log_*)或su root将您的权限提升到根用户,然后疯狂,但不要太疯狂。请记住,Unix/Linux中没有撤消功能。在启动mysql之后,检查mysql服务器的日志文件,看看它是否再次运行正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41907028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档