我創建了一個批次檔來建立資料庫轉儲並將其保存在檔案中,並將當前日期作為檔案名稱的一部分。批次檔運作良好,所有資料都正確保存。
我現在嘗試設定每週執行的計劃任務,但遇到了一個問題:雖然任務運行,但它創建的文件是空的,就好像它沒有從遠端資料庫中提取任何資料一樣。我知道這很模糊,但有人能告訴我從哪裡開始尋找原因/解決方案嗎?
** 編輯 **
是的,更多進展 - 看起來可能是路徑問題,我在批次檔中暫停了,當透過任務規劃程式運行時,它說:「mysqldump 不是一個可識別的程式」。但是,當在我的用戶帳戶上透過命令列運行時,它工作正常;只是為了確認,我已將其設定為在我測試它的同一用戶帳戶上運行。
** 編輯 2 **
我找到了一種解決方案:我必須透過絕對路徑引用 mysqldump 應用程式。但是我仍然不明白為什麼當直接從命令列運行時它可以從路徑中找到 mysqldump,但透過任務調度程序自動運行時卻不能。
答案1
也許網路不可用?您可以嘗試將其安排為每 5/10 分鐘運行一次,並查看命令/變數是否正確。您確定腳本作為整體運行而不是一次只運行單個命令時正確運行嗎?
在您的編輯 2 上:似乎 mysqldump 不存在於PATH
環境變數中。嘗試新增該內容,然後重試。
答案2
您是否嘗試過以詳細模式執行 mysqldump(在您的排程任務中)? (--詳細)
另外,也許看看您的任務正在以什麼使用者身分執行,確保該使用者有權運行 mysqldump 並在目標目錄中建立檔案。
答案3
如果給出絕對路徑解決了您的問題,則不可能建立空文件。相反,使用 Windows 排程器日誌建立的檔案不會顯示作業成功。
如果路徑變數保存 mysqldump.exe 的路徑訊息,您的腳本可能在命令列上執行。透過向命令列發出“path”命令來檢查它。
這裡是我用於 mysql 備份的範例批次文件,供您參考。
@迴聲關閉 SET DB_USER_ID=[id] SET DB_USER_PASS=[密碼] SET DATABASE=[資料庫名稱] SET EXP_PATH=[備份路徑] SET EXP_TMP_PATH=[臨時路徑] SET FILE_NAME=[備份檔名] 對於 /f "tokens=1-3 delims=- " %%a in ('date /t') do (今天設定=%%a-%%b-%%c) 刪除 /S /Q %EXP_PATH% md%EXP_PATH% md%EXP_TMP_PATH% C:\Bitnami\redmine-2.5.2-0\mysql\bin\mysqldump.exe -u%DB_USER_ID% -p%DB_USER_PASS% %DATABASE% > %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql 移動 %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql %EXP_PATH%\%FILE_NAME%_%today%.sql