MySQL 默認安裝僅包含 MyISAM 非事務引擎。若需事務支持(ACID)、行級鎖定、外鍵約束,必須使用 MySQL Max 版本並啟用 InnoDB 引擎。本文記錄在 Windows 2000/XP/2003 上的完整配置流程。
mysqld-max-nt.exe)C:\mysql)C:\> cd mysql\bin
C:\mysql\bin> WinMySQLadmin.exe # 啟動圖形管理器初始化配置,隨後關閉
C:\mysql\bin> mysqld-nt --remove # 移除默認非事務服務
C:\mysql\bin> mysqld-max-nt --install # 安裝支持 InnoDB 的 Max 服務
C:\> mkdir ibdata
C:\> mkdir iblogs
目錄名稱與盤符可自定,但後續配置需保持一致。建議放置於非系統盤且有充足空間的分區(官方建議 10GB+)。
my.ini 啟用 InnoDB 核心參數打開 C:\WINNT\my.ini 或 C:\Windows\my.ini(視系統版本),在文件末尾追加:
[mysqld]
# 基礎數據文件配置
innodb_data_home_dir = C:/ibdata
innodb_data_file_path = ibdata1:200M;ibdata2:200M:autoextend
# 若磁盤空間充裕,可按官方建議設置 2000M;小環境 200M 足矣
# 日誌文件配置
innodb_log_group_home_dir = C:/iblogs
innodb_log_files_in_group = 3
innodb_log_file_size = 30M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_log_arch_dir = C:/iblogs
innodb_log_archive = 0
# 內存緩存池(根據物理內存調整,建議 50%-80%)
innodb_buffer_pool_size = 80M
innodb_additional_mem_pool_size = 10M
# 並發與鎖控制
innodb_file_io_threads = 4
innodb_lock_wait_timeout = 50
# 鏡像日誌組(通常保持 1)
innodb_mirrored_log_groups = 1
關鍵點:
/ 或雙反斜槓 \\innodb_data_file_path 末尾加 :autoextend 可自動擴展,避免寫滿報錯C:\> net start mysql
C:\> mysql -u root -p
mysql> SHOW VARIABLES LIKE 'have_%';
預期輸出包含:
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| have_innodb | YES |
| have_bdb | YES |
| have_isam | YES |
| have_raid | NO |
| have_openssl | NO |
| have_query_cache| YES |
+----------------+-------+
have_innodb = YES 即表示事務引擎已就緒。
CREATE TABLE t_order (
id INT PRIMARY KEY AUTO_INCREMENT,
amount DECIMAL(10,2)
) ENGINE=InnoDB;
或使用 TYPE=InnoDB(舊版本語法,5.1+ 棄用)。
C:\iblogs、C:\ibdata 目錄權限,確保 MySQL 服務賬號可讀寫ibdata1 初始化報錯:刪除 ibdata*、ib_logfile* 後重啟服務自動重建mysqld-max-nt 而非 mysqld-ntMySQL 4.0 已實現基礎外鍵,4.1 完善子查詢,5.0+ 全面支持存儲過程、觸發器、視圖。生產環境建議直接部署 5.7/8.0 版本,獲得更完善的事務隔離級別與性能優化。