php - 命令在 php 中恢复 mysql 数据库备份

标签 php mysql restore

我在恢复数据库文件时遇到问题。下面是我用来恢复的脚本:

<?php
$dbhost   = "localhost";
$dbuser   = "root";
$dbpwd    = "";
$dbname   = "fhc_test";

$dumpfile = "backup/".$_GET['id'].".sql";

exec("C://xampp/mysql/bin/mysql -u $dbuser -p $dbpwd $dbname < $dumpfile");
?>

下面是我用来做备份的脚本:

<?php
$dbhost   = "localhost";
$dbuser   = "root";
$dbpwd    = "";
$dbname   = "fhc";
date_default_timezone_set("Asia/Singapore");

$dumpfile = "backup/". $dbname . "_" . date("d-m-Y_H_i_s") . ".sql";

exec("C://xampp/mysql/bin/mysqldump --opt --host=$dbhost --user=$dbuser --password=$dbpwd $dbname > $dumpfile");
?>

备份文件时没有发现问题。当我手动将备份内容复制并粘贴到数据库中时,它可以毫无问题地完美恢复。但是当我运行还原脚本来执行还原时,文件会持续加载很长时间而不会提示任何错误。所以,我停止加载,似乎没有表被恢复到数据库中。

当我尝试从 cmd 运行脚本时,可以完全快速地完成恢复。在这种情况下,我将备份文件放在与 mysql.exe 相同的文件夹中

这是我在 cmd 中执行命令的方式:

C:\xampp\mysql\bin>mysql -u root -p  fhc_test < fhc.sql

谁能帮我弄清楚我的恢复脚本中有什么问题?因为我已经做了很多检查,代码似乎没有错误。我是否必须从 c:/xampp/mysql/bin 复制 mysql.exe 文件并将其放入我放置 php 文件的同一文件夹中?

我真的不知道我要做什么。

最佳答案

鉴于您使用:

C:\xampp\mysql\bin>mysql -u root -p  fhc_test < fhc.sql

这是您尝试使用的用户 root。不是 phpmyadmin 用户。所以你需要使用-p选项来给root密码。

关于php - 命令在 php 中恢复 mysql 数据库备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19331490/

相关文章:

php - 测试整个 PHP 网站

php - Jquery AJAX 发布到 PHP 不起作用

php - Laravel : count(): Parameter must be an array or an object that implements Countable

php - Laravel Eloquent(where 子句)

mysql - jpql select查询与where子句不区分非英文字符

image - 从不同订阅下创建的镜像创建 Azure VM

mysql 从 3 个表中选择,其中并非所有表都包含相同行数的信息(内连接?!)

php - 在非对象错误上调用成员函数bind_param(),但 SQL 可以工作

docker - Docker CouchBase Cbbackup/cbtransfer/cbrestore工具

.net - 使用 Visual Studio 2017 构建 Docker 失败,因为在使用私有(private) nuget 源的 dotnet 还原期间超时