應用啟動時報錯 Mysql version can not be less than 4.1,直覺以為是資料庫版本過低,實際上 MySQL 5.0/5.5/5.6 均滿足需求。經排查,**真正原因是應用設定檔未正確指向資料庫連線資訊**,導致版本檢查邏輯讀取到空值或預設值,誤判版本不符。
# 應用啟動日誌
ERROR: Mysql version can not be less than 4.1
# 但實際資料庫版本
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.10 |
+-----------+
應用啟動時會執行版本相容性檢查(如 SELECT VERSION() 解析主版本號),若**資料庫連線參數錯誤**(主機、埠、帳號、密碼、資料庫名任一不符),連線失敗或連到錯誤實例,檢查邏輯捕獲異常後拋出預設錯誤訊息「版本過低」,實為**連線配置錯誤的誤導性提示**。
config.inc.php、config/db.php、.envjdbc.properties、application.yml、db.propertiessettings.py、config.yamlweb.config、appsettings.json# 典型 PHP 設定檔範例
$dbHost = "localhost"; # 或實際 DB IP
$dbName = "my_database"; # 確切資料庫名稱
$dbUser = "app_user"; # 具備權限的帳號
$dbPass = "correct_pass"; # 正確密碼
$dbPort = 3306; # 非預設埠必須指定
$dbHost 為 DB 伺服器內網 IP,非 localhost。# 命令列直接測試連線與版本
mysql -h $dbHost -P $dbPort -u $dbUser -p$dbPass -e "SELECT VERSION();"
# 若成功顯示版本號,說明應用設定檔參數有誤
SELECT 1、檢查版本,失敗時輸出詳細錯誤(主機不可達、認證失敗、權限不足),而非通用版本錯誤。connectionInitSql=SELECT 1 提前發現問題。