如何使用php脚本创建数据库备份。我正面临一个错误

时间:2014-01-28 05:31:25

标签: php mysql

我正在尝试此代码,但它显示错误

  

“无法进行数据备份:

     

无法创建/写入文件'\ transfer \ employees.sql'(错误代码:2)“

当我点击我的按钮创建备份文件时。

<?php
$dbhost = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbdatabase = "ghis_verf";
$conn = mysql_connect($dbhost,$dbusername,$dbpassword);
if(! $conn )
{
      die('Could not connect: ' . mysql_error());
}
$table_name = "employees";
$backup_file  = "/transfer/employees.sql";
$sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name";
mysql_select_db($dbdatabase,$conn) or die("Cannot select database");
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
    die('Could not take data backup: ' . mysql_error());
}
echo "Backedup  data successfully\n";
?>

3 个答案:

答案 0 :(得分:1)

我认为您的网络服务器根目录中没有文件夹/transfer,或者没有权限写入它。

确保您可以执行su -c "touch /transfer/employees.sql" www-data(用适当的用户替换www-data系统)。如果没有 - 检查权限或文件夹是否存在。

答案 1 :(得分:1)

可能是因为写入权限不足。如果您使用的是Linux,则可能需要首先创建该文件夹作为占位符,并具有足够的权限供Apache写入:

$ cd /path/to/app
$ mkdir transfer
$ chmod 777 transfer

查看以下PHP脚本是否适合您:

<?php
$dbhost = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbdatabase = "ghis_verf";
$table_name = "employees";
$backup_file = "transfer/employees.sql";
$cmd = "mysqldump -h {$dbhost} -u {$dbusername} -p '{$dbpassword}' {$dbdatabase} {$table_name} > {$backup_file}";
system($cmd);
?>

/transfer也是文件系统中的绝对根路径。也许它就像/var/www/transfer?或者将其更改为绝对路径,例如transfer/

希望它有所帮助。

答案 2 :(得分:0)

请检查以下链接,通过PHP代码导出数据库。希望这对你有用。 http://phptipmaster.blogspot.com/2013/01/mysql-database-export-via-php-code.html