在过去的几周里,我一直在研究我们的测试 MySQL 服务器的配置,没有首先制作一个mysqldump
在其上运行的应用程序。目的是提高性能并启用lowercase_names
。我尝试调整 InnoDB 日志文件大小,为此我必须删除(例如,重命名)InnoDB 日志文件才能重新创建它们。最后,我恢复了旧日志文件并注释了所有 InnoDB 日志文件选项,将选项保留lowercase_names=1
在 Linux 中。
今天我发现最旧的应用程序的数据库无法访问。虽然SHOW TABLES;
报告所有表,但执行时SELECT * FROM TABLE
显示ERROR 1146 (42S02): Table 'TABLE' doesn't exist
。
- 我仍然有原始
ibdata1
文件,我从未备份过 ib_logfile[01]
我有文件备份- 我尝试设置
innodb_force_recovery
到 6,但仍然出现同样的错误
我已经转储了所有其他正在工作的数据库。
我怎样才能挽救给定文件的最后一个文件?
答案1
这不是 InnoDB 日志文件或其他什么的问题。
当我调整数据库配置时,我的目标是使能够 lowercase_names
因为我们的一个应用程序有硬编码查询。这最终破坏了我试图挽救的数据库查询。
您永远无法恢复使用不同名称大小写创建和填充的数据库。因此,解决方案是暂时注释掉lowercase_names
,倾倒并从中恢复。