1. 程式人生 > 其它 >MySQL:備份資料庫指令碼報錯mysqldump: Couldn‘t execute ‘SELECT COLUMN_NAME****

MySQL:備份資料庫指令碼報錯mysqldump: Couldn‘t execute ‘SELECT COLUMN_NAME****

技術標籤:MySQL

指令碼如下

@echo off
echo 如果備份過程遇到任何問題請聯絡 感謝您的使用

title MYSQL資料庫備份進行中,請不要關閉該視窗
color 0c
echo.
echo MySQL資料庫備份


echo *****************************
echo.
echo 今天是 %date%
echo 時間是 %time%
echo.
echo *****************************
rem 下面設定需要備份的資料庫伺服器IP地址,可修改,如修改,修改後面的IP地址即可,如為本機就改成127.0.0.1即可;
set "Server=127.0.0.1"
echo 需要備份的資料庫伺服器IP是: %Server%
rem 下面設定需要備份的資料庫名稱,可修改,如修改,修改等於號後面的資料庫名稱即可;
rem 設定資料庫的埠號,預設3306,可修改,如修改,修改等於號後面的埠號即可
set "PORT=3306"
echo 埠號是:%PORT%
rem 下面設定該資料庫的使用者名稱和密碼,可修改,如修改,修改等於號後面的資料庫使用者名稱和密碼即可,請確保使用者名稱和密碼的正確;
set "USERNAME=zabbix"
set "PASSWORD=zabbix"
echo 資料庫使用者名稱是: %USERNAME%
rem 下面設定資料庫備份的目的路徑,如路徑不存在則建立,可修改,如修改,修改等於號後面的路徑即可;
set "BACKUPDIR=E:\YSHJ_MySQL\back_up\%date:~,4%%date:~5,2%%date:~8,2%\"
echo 資料庫備份到的路徑是: %BACKUPDIR%
set "sysName=drworkstation"
rem  下面是設定備份的日誌檔案,預設日誌檔案再上面設定的備份路徑下面,可修改,如修改,修改等於號後面的路徑或者檔名稱即可;
set "LOGFILE=%BACKUPDIR%\%sysName%_bakup.log"
echo 日誌檔案的路徑是 %LOGFILE%,備份結束後可以檢視日誌檔案%LOGFILE%,檢視是否備份成功

if  not exist "%BACKUPDIR%" (
echo 備份路徑不存在將建立目錄和日誌檔案
mkdir %BACKUPDIR%
if %ERRORLEVEL% == 0 (
echo 目錄已經建立成功
)
)
echo 當前時間是 %time%>>%LOGFILE%

set "DBNAME=zabbix"
echo 開始備份資料庫: %DBNAME%
echo 開始備份資料庫: %DBNAME%>>%LOGFILE%
"mysqldump" --opt -Q -R -F --single-transaction -h %Server% -u%USERNAME% -p%PASSWORD% -P%PORT% --default-character-set=utf8 --hex-blob=TRUE %DBNAME% >"%BACKUPDIR%\%DBNAME%_bak.sql"
echo 資料庫: %DBNAME%備份完成
echo 資料庫: %DBNAME%備份完成>>%LOGFILE%


goto  END

:ErrorEnd
echo 資料庫備份有錯誤,請聯絡資料庫管理員,將退出程式 
echo 資料庫備份有錯誤,請聯絡資料庫管理員,將退出程式 >>%LOGFILE%
goto  END


:END
echo 任意字元結束
pause
rem exit

這個指令碼在多個場景都是正常的,今天連線zabbix資料庫提示一個錯誤:

開始備份資料庫: zabbix
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Couldn't execute 'SELECT COLUMN_NAME,                       JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')                FROM information_schema.COLUMN_STATISTICS                WHERE SCHEMA_NAME = 'zabbix' AND TABLE_NAME = 'acknowledges';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

原因:

  因為新版的mysqldump預設啟用了一個新標誌,通過--column-statistics=0來禁用他

解決方法:

  命令列增加--column-statistics=0

"mysqldump" --opt -Q -R -F --single-transaction -h %Server% -u%USERNAME% -p%PASSWORD% -P%PORT% --default-character-set=utf8 --column-statistics=0 --hex-blob=TRUE %DBNAME% >"%BACKUPDIR%\%DBNAME%_bak.sql"