数据库还原其实就是从.sql文件中读取一行一行的命令,然后执行
需要配置数据库文件database.php,数据库名,主机名,用户名,密码这里就不说了,这里说的要配置数据库连接参数
'params' => [
//开启客户端缓冲区
'MYSQL_ATTR_USE_BUFFERED_QUERY'=>true,
],
如果数据库文件较大,要设置php.ini文件,memory_limit= 128M;,这里可以尽量调大一点,否则会报错提示分配的内存存储空间不够用了
public function restore(){ $filename="backsql.sql"; if (file_exists($filename)) { $sql_value = ""; $cg = 0; $sb = 0; $sqls = file($filename); foreach ($sqls as $sql) { $sql_value .= $sql; } $a = explode(";\r\n", $sql_value); //根据";\r\n"条件对数据库中分条执行 $total = count($a) - 1; for ($i = 0; $i < $total; $i++) { //执行命令 //halt($a[$i]); if (Db::query($a[$i])!==false) { $cg += 1; } else { $sb += 1; $sb_command[$sb] = $a[$i]; } } echo "数据库还原成功,共处理 $total 条命令,成功 $cg 条,失败 $sb 条"; //显示错误信息 if ($sb > 0) { echo "
失败命令如下:
"; for ($ii = 1; $ii <= $sb; $ii++) { echo "第 " . $ii . " 条命令(内容如下):
" . $sb_command[$ii] . "
"; } } }else{ echo "MySQL备份文件不存在,请检查文件路径是否正确!"; } }