2012-02-01 121 views
0

我想備份和回滾備份數據庫,並且我想看看有什麼錯:爲什麼在嘗試使用mysqldump命令時會出現此錯誤?

「mysqldump的」不被識別爲一個內部或外部命令,可操作的程序或批處理文件。

以上是我在導出的文件中得到的內容。這是我運行的:

$database = 'logindb'; 

$backup = $location.'/'.$database.'_backup_'.date('Y').'_'.date('m').'_'.date('d').'.sql'; 

exec("mysqldump --opt -h localhost -u root logindb > $backup 2>&1", $output); 
print_r($output); 

由於$location是我的備份文件夾。那麼,爲什麼我會得到這個錯誤?

而作爲附加信息,我使用XAAMP測試本地主機,Apache服務器正在運行並且MySQL正在運行。

+0

找不到像'mysqldump'這樣的聲音:它沒有安裝(我不知道你是否可以單獨安裝它,或者這對於堆棧會非常奇怪),或者你的用戶(apache? )沒有權利嗎? – Nanne 2012-02-01 12:23:42

+0

如果您試圖在共享主機上執行此操作,也可以禁用「mysqldump」。 – Narek 2012-02-01 12:30:01

+0

我首先在本地主機上測試。 – Roland 2012-02-01 12:46:42

回答

2

因爲mysqldump不在httpd用戶路徑中。

我假設你在Linux(或UNIX)中工作。

要知道女巫目錄包含mysqldump,您可以執行whereis mysqldump

這時你有兩種選擇:

  • 檢查mysqldump的目錄中的httpd用戶的PATH環境變量(usualy www-data用戶爲Apache服務器)。並將它包含在PATH中不存在。

  • 你也可以用完整路徑執行mysqldump

像這樣:

exec("/path_to_mysql_bins/mysqldump ... 
+0

我如何找到該路徑? – Roland 2012-02-01 12:46:17

+0

我不得不添加'c:/ xampp/mysql/bin/mysqldump ...',在那裏我找到了'mysqldump.exe'文件。但是當我在共享服務器上運行時會發生什麼?我不需要那條路嗎?還有,我將如何回滾數據庫? – Roland 2012-02-01 12:56:07

+0

當參數化數據庫連接時,可以參數化路徑。 – danihp 2012-02-01 13:52:37

0

的錯誤不是一個mysqldump的錯誤,這是一個Windows錯誤,指出它不理解什麼mysqldump涉及。要解決這個問題,可以將mysqldump可執行文件的路徑包含到environment variables,或者使用mysqldump可執行文件的完整路徑(可在XAMPP mysql文件夾中找到)運行exec命令。

相關問題