首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 4.1 升級 5.0 完整遷移指南:不相容變更、權限表、字元集、SQL 模式

     編輯:MySQL 資料庫相關知識

升級前必做三件事

  1. 備份:mysqldump --all-databases > backup.sql
  2. 閱讀 Release Notes:關注標記 Incompatible change 的項目
  3. Windows 專屬:參考 Section 2.3.15,注意服務重命名

核心不相容變更清單 (5.0.3~5.0.15)

版本變更應對動作
5.0.3TEXT 索引尾部空格語意改為 PAD SPACE (同 CHAR/VARCHAR)CHECK TABLE 報錯則重建:InnoDB dump/reload,MyISAM OPTIMIZE/REPAIR TABLE
5.0.6DECIMAL 儲存格式變更,舊表損壞升級前 mysqldump 匯出,升級後重載
5.0.3UDF 需至少一個輔助符號 (xxx_init/xxx_deinit)或啟動加 --allow-suspicious-udfs
5.0.3更新日誌移除,改用二進位日誌調整備份腳本
5.0.3ISAM 引擎移除升級前 ALTER TABLE ... ENGINE=MyISAM
5.0.3MyISAM RAID 選項移除dump → 編輯移除 RAID 選項 → 重載
5.0.10Trigger 命名空間改為 Schema 級 (原表級)匯出 Trigger 定義 → 刪除 .TRG 檔 → 重建
5.0.12NATURAL JOIN / USING 遵循 SQL:2003 (移除重複欄、順序規範)檢查應用程式 JOIN 結果集
5.0.15CHAR() 回傳二進位字串 (非連線字元集)加 USING charset 或 CONVERT()

權限表升級 (必要步驟)

mysql_fix_privilege_tables

產生 proc 表 (Stored Routine)、user/db 新增 View/Trigger 權限欄。

SQL Mode 嚴格模式

  • 5.0.2 新增 TRADITIONAL 模式:嚴格拒絕不合法資料
  • 需保留錯誤日期 (如 '2004-02-31'):--sql_mode=TRADITIONAL,ALLOW_INVALID_DATES

C API 陷阱

舊 4.1 client library 連 5.0 server 執行 prepared statement 回傳 MYSQL_TYPE_NEWDECIMAL 會報錯。解法:重新編譯連結 5.0 client library。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved