gpt4 book ai didi

innodb - 如何解决数据损坏问题?无法对表运行任何 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 20:48:58 24 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序,该应用程序查询具有两个表的数据库。我认为我遇到了数据损坏的问题。我的一张 table 很好,我已经把它扔掉并备份了。我使用 Python 脚本解析了一些 MongoDB 数据来填充数据库。

我正在使用 HeidiSQL 来处理我的数据库,除非我在 my.ini 中指定“innodb_force_recovery = 4”(我相信这会创建表的只读版本),否则我无法查看损坏的表。即使如此,在指定该条件后,我仍无法对表执行 mysqldump。

然后我想,也许是HeidiSQL的问题。事实并非如此。即使从命令行 mysqld,我也无法对损坏的数据库执行任何操作。下面我显示了我收到的错误消息。

Error message in mysqld as viewed via command line

甚至 XAMPP 控制面板在启动时也会抛出以下错误:

160705 14:41:34 [ERROR] mysqld got exception 0x80000003 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware.

所以。此时,我可以重新运行我的 python 脚本,但我假设我会遇到相同的错误。

您建议我如何处理这个问题?

最佳答案

表空间已损坏,您的最终目标是进行转储并从头开始重新创建 InnoDB 表空间。

当您从innodb_force_recovery=4开始时,将所有表一一转储。编写一个循环遍历所有数据库和所有表的脚本。将--skip-lock-tables添加到mysqldump,有时会有帮助。

然后尝试更高的 innodb_force_recovery 值:5 和 6。尝试使用 innodb_force_recovery=4 转储导致 MySQL 崩溃的剩余表。

如果您仍然无法转储表,请搜索“percona 数据恢复工具包”或“undrop-for-innodb”。这些工具都可以在低级别上使用 InnoDB 表空间,并允许从 InnoDB 页面获取记录,跳过损坏的区域。

完成所有转储后,删除所有 innodb 文件(ibdata1、ib_logfile* 和 *.ibd,如果有)并导入转储。

关于innodb - 如何解决数据损坏问题?无法对表运行任何 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38210863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com