2010-11-27 210 views
0

我試圖用PHP備份我的MySQL數據庫,但是當我設置備份的路徑時,我在運行腳本時收到另一個路徑。PHP腳本來備份數據庫

這是我的腳本:

$baseDir = 'backup/'; 
$db; 
$table; 
$server = $_SERVER['HTTP_HOST'] . substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'],'/')); 

這是備份功能中:

global $baseDir; 
global $db; 
global $server; 
$backupFile = $server . "/$baseDir$db/$tab.sql"; 
$query = mysql_query("SELECT * INTO OUTFILE '$backupFile' FROM $tab"); 
if(!$query) 
    echo "\t" .mysql_error() .PHP_EOL; 
else 
    echo " backuped." . PHP_EOL; 

我得到的路徑是:c:\wamp\bin\mysql\mysql5.1.36\data\localhost\db\backup\contact_keeper\accounts.sql與erroCode:2(不能老是寫/創建)。

+1

更好的解決方案是使用`mysqldump` - http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html – ajreal 2010-11-27 15:16:34

回答

2

SELECT ... INTO OUTFILE僅限於創建新文件。它不能覆蓋現有文件作爲安全措施。同樣,確保在Windows中運行MySQL的帳戶對該目錄具有寫入權限。它可能只有讀/執行。