我正在尝试此代码,但它显示错误
“无法进行数据备份:
无法创建/写入文件'\ 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";
?>
答案 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