自动修复crashed的数据表

去圣西罗-为尤文喝彩 2013-10-03 02:47:17
function check_table($table){
require dirname(__FILE__) .'/connection.php';
mysql_select_db("news",$db);
$ret = mysql_query("SHOW TABLE STATUS WHERE `name` = '".$table."'");
while($row = mysql_fetch_array($ret)){
if($row['Engine']!='MyISAM'){
$wrong=1;
}
}
if($wrong){
mysql_query("REPAIR TABLE ".$table);
}
mysql_close($db);
$wrong=$ret=$row=NULL;
}

上面的代码是不是可以检查数据表是否crashed?
crashed的数据表是不是 $row['Engine'] = null?
没找到相关的文章,求助各位前辈。
...全文
168 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
好像应该是
if($row["Collation"]=='in use'){
对吗?
xuzuning 2013-10-03
  • 打赏
  • 举报
回复
13.5.2.6. REPAIR TABLE语法 REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REPAIR TABLE用于修复被破坏的表。默认情况下,REPAIR TABLE与myisamchk --recover tbl_name具有相同的效果。REPAIR TABLE对MyISAM和ARCHIVE表起作用。 而你却是在 !='MyISAM' 的条件下执行 REPAIR TABLE
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
13.5.2.6. REPAIR TABLE语法 REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REPAIR TABLE用于修复被破坏的表。默认情况下,REPAIR TABLE与myisamchk --recover tbl_name具有相同的效果。REPAIR TABLE对MyISAM和ARCHIVE表起作用。 而你却是在 !='MyISAM' 的条件下执行 REPAIR TABLE
数据表格式为MyISAM,当数据表错误时,在phpmyadmin里显示表的状态为in use。 那么,怎么样的mysql语句,可以检查数据表错误,然后执行REPAIR TABLE语句? 谢谢。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧