Server 端已為 MySQL 5.1,Client 仍為 5.0,phpMyAdmin 提示版本不匹配。Ports 直接升級因衝突失敗,需先移除舊套件。
# 1. 強制刪除舊 client (忽略依賴)
pkg_delete -f mysql-client-5.0.89
# 2. 編譯安裝 5.1 client
cd /usr/ports/databases/mysql51-client
make install clean
# 3. 驗證版本
mysql -V
# mysql Ver 14.14 Distrib 5.1.42, for portbld-freebsd8.0 (amd64)
# 4. 升級依賴的 PHP 擴展
portmaster php5-mysql php5-mysqli
# 5. 重啟 Apache
service apache22 restart
⚠️ 風險:pkg_delete -f 會破壞套件資料庫完整性,PHP 擴展需立即重建,否則網站報錯。
# 1. 升級 Client (5.1 → 5.5 範例)
portmaster -o /usr/ports/databases/mysql55-client /usr/ports/databases/mysql51-client
# 過程會自動安裝 cmake 等建構依賴
# 2. 升級 Server (同步版本,需重新指定字元集)
portmaster -o databases/mysql55-server databases/mysql51-server
# 3. 修正權限並初始化
mysql_install_db
chown -R mysql:mysql /var/db/mysql
# 4. 啟動服務
/usr/local/bin/mysqld_safe &
# 5. 升級系統表 (關鍵!)
mysql_upgrade -u root -p
# 6. 修正配置檔
# 將舊 my.cnf 中的 skip-locking 改為 skip-external-locking
# 確認字元集設定 (gbk/gb2312 在新版可能不支援,改 utf8mb4)
| 維度 | 方案一 (暴力重裝) | 方案二 (Portmaster 升級) |
|---|---|---|
| 依賴處理 | 手動重建 | 自動追蹤重建 |
| 風險 | 中 (套件資料庫不一致) | 低 (Ports 機制保證) |
| 停機時間 | 較長 | 較短 |
| 適用場景 | 極舊版本、Ports 樹已更新無升級路徑 | 常規版本升級、生產環境首選 |
mysql -V 確認 Client/Server 版本一致。SHOW VARIABLES LIKE 'character_set%'; 確認字元集正確。