2017-02-17 146 views
0

我尝试为我的数据库创建一个备份。我的数据库是MySQL。我正在使用PHP。我使用cron作业来每小时执行一次该代码。使用mysqldump Mysql PHP备份数据库

这是我的代码:

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$dbname='stock'; 
$backup_file = $dbname . date("Y-m-d-H-i-s") . '.sql'; 
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "stock | gzip > $backup_file"; 
system($command); 

的问题是,我的代码给我一个空文件,我怎么能有我所有的数据库?!

+2

[自动或定期备份mysql数据]可能的重复(http://stackoverflow.com/questions/38916163/automated-or-regular-backup-of-mysql-data) – e4c5

+0

@ e4c5对不起,它没有给我一个答案:( – Developer

+0

它呢。你不应该这样做 – e4c5

回答

1

我也遇到同样的问题/情况多年回来。请参阅here。 这里有几件事需要注意: -

  1. 强制使用绝对路径进行MySQL转储。
  2. 尝试使用--opt(MySQL转储的默认选项)。可以参考http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
  3. 对于选项,如果使用缩写形式,则不需要有( - )。例如:--p。使用完整表单时使用( - )。例如: - 密码。因此,使用'-p'而不是'--p'(也适用于其他选项)。
  4. 如果MySQL转储在'exec'上不起作用,请尝试'shell_exec'或'system'。
  5. 尽量避免选项和变量之间有空格。例如:-p $ dbpass

*还要记住,它涉及的权限是否可以从PHP执行系统命令。

+0

非常感谢你解决我的问题! –