
正文
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 "<hr><br><br>失败命令如下:<br>";
for ($ii = 1; $ii <= $sb; $ii++) {
echo "<p><b>第 " . $ii . " 条命令(内容如下):</b><br>" . $sb_command[$ii] . "</p><br>";
}
}
}else{
echo "MySQL备份文件不存在,请检查文件路径是否正确!";
}
}







