如果您尝试访问 INNODB 类型数据库中的表,而 MariaDB 告诉您它不存在,则您的数据库已损坏。
(我发这个问题是因为所有现有的问题都被各种版主“关闭”了,他们没有一个真正的答案。他们讨论了 INNODB 的复杂性,最终你必须通过一个折磨人的方式重建整个数据库服务器过程。)
这可能不适用于每个人,但它确实对我们有用过几次:
编辑 mysql.cnf 以便在 [mysqld] 部分下它具有:
[mysqld]
innodb_force_recovery = 1
Run Code Online (Sandbox Code Playgroud)启动数据库(service mysql start),在日志文件中你会看到它强制加载坏的数据库/表
以 root 身份登录数据库服务器:mysql -u root
运行命令“show databases[ENTER]”以获取数据库列表
运行命令“drop [dbname][ENTER]”,其中 [thedb] 是您需要删除的数据库。它会删除它,但会抱怨它无法删除目录 ./[thedb]。
打开一个单独的 shell 并进入 /var/lib/mysql/[thedb]/ 并删除那里的文件。
停止数据库(service mysql stop)
通过注释掉 mysql.cnf 中的行来关闭 REPAIR 模式
[mysqld]
#innodb_force_recovery = 1
Run Code Online (Sandbox Code Playgroud)使用以下命令重新启动数据库:
service mysql start[ENTER]
Run Code Online (Sandbox Code Playgroud)瞧。
现在重新创建数据库并从备份中恢复。
谢谢,大卫
归档时间: |
|
查看次数: |
4654 次 |
最近记录: |