使用方法:
1、前提条件,数据库损坏前,你的 my.cnf 里面含有 innodb_file_per_table =1 这个配置。
在 my.cnf 添加 innodb_force_recovery=5
2、把代码存为 step1.php,填入 rootPass, bkPath,然后执行
php step1.php 数据库名字
各个表的 create 语句就导出到了 /home/dbjg 文件夹里。然配合 innodb表修复 程序,
http://blog.csdn.net/gold2008/article/details/11702801
基本可以比较全自动的修复 innodb 表了
<?php
// 数据库文件路径:/usr/local/mysql/var | /home/dbjg 目录存放各个表 Create 语句
$dbname = trim($argv[1]); $dbname == '' && exit('no db');
$rootPass = ''; // root 密码
$bkPath = ""; // .frm 备份所在路径,不能是现在的数据库存放路径里面
!file_exists("/home/dbjg") && mkdir("/home/dbjg");
$ffs = glob("$bkPath/*.frm"); `unalias cp`;
foreach ($ffs as $ff) {
$a