在 Debian 8 下的 mysql 5.5.53(innodb 数据库)上
又一个 mysql 新手苦苦学习 mysql。真正艰难的方法。提供的任何帮助都会很棒。我的网站离线了,这对我来说真的很重要。问题:我不知道我是否有损坏的数据库、表或者 mysql 本身是否损坏。n mysql 崩溃与一个数据库而不是另一个。我使用
登录到 mysqlmysql -u root -p
进入后,我输入
use drupal;
show tables;
效果很好。然后我输入
use civicrm;
show tables;
我明白了
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
然后我试试
mysqlcheck -u root --password civicrm
这将开始列出 civicrm 的所有表,但它会在大约 4 个表崩溃后命中名为 log_civicrm_* 的表
Got error: 2013: Lost connection to MySQL server during query when executing 'CHECK TABLE ... '
索引文件 ib_logfile1 和 ib_logfile0 都被重建。我已将 my.cnf 设置为
key_buffer = 512M
max_allowed_packet = 64M
thread_stack = 3M
thread_cache_size = 8
我试图转储数据库 civicrm,但它在启动时就失败了。我可以转储大部分表,除了少数几个名为 log_civicrm_* 我尝试使用的表
innodb_force_recovery=5
没有变化。文件/var/log/mysql/error.log 显示
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 ;
和
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 错误而失败。我在这里有什么选择?数据库是否需要修复、表,或者是否有其他东西坏了,接下来我该去哪里修复它?谢谢。
最佳答案
发现问题。损坏的日志表。为糟糕的 mysql 造成 MEGA-chaos。任何时候使用 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 将您的权限提升到 root,然后疯狂但不要太疯狂。请记住,在 Unix/Linux 中无法撤消。启动mysql后,查看mysql服务器的日志文件,看是否再次开心。
关于mysql - ERROR 2006 (HY000) : MySQL server has gone away - Broken db, 表或 mysql 坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907028/