故障描述:Discuz!x3- x3.4在服务器突然断电或强制重启时,mysql可能会出现表错误导致discuz报错 
 
解决方案: 
 
1.打开source\class\discuz\discuz_table.php 
搜索: 
- if(isset($this->_pre_cache_key) && (($ttl = getglobal('setting/memory/'.$this->_table)) !== null || ($ttl = $this->_cache_ttl) !== null) && memory('check')) {
 
 -                         $this->_cache_ttl = $ttl;
 
 -                         $this->_allowmem = true;
 
 -                 }
 
  复制代码 
在下面加入: 
 
 
2.在文件底部加上 
- public function autoxiufu() {
 
 -       $query1=DB::query('CHECK TABLE '.DB::table($this->_table));
 
 -           $checkresult =mysql_fetch_array($query1, MYSQL_ASSOC);                         
 
 -           if($checkresult['Msg_text'] != 'OK') {
 
 -           DB::query('REPAIR TABLE '.DB::table($this->_table));
 
 -                  }
 
 -                 
 
 -         }
 
  复制代码 
3.替换同名文件,这个代码可以解决表错误时自动修复,但是会影响论坛效率,建议经常坏表的可以用哦 
 |