2017-02-17 191 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

非常感謝你解決我的問題! –