thinkphp5实现mysql数据库还原

数据库还原其实就是从.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备份文件不存在,请检查文件路径是否正确!"; } }

 

转载于:https://www.cnblogs.com/jcydd/p/7290361.html

你可能感兴趣的:(thinkphp5实现mysql数据库还原)