在 MySQL 早期版本(5.1 之前),建立資料表時常使用 TYPE=MyISAM 來指定儲存引擎。然而,從 MySQL 5.1 開始,官方已棄用 TYPE 關鍵字,改為標準的 ENGINE。若在較新版本(如 MySQL 5.5、5.6、5.7、8.0)中仍使用舊語法,執行 CREATE TABLE 陳述式時會拋出語法錯誤。
CREATE TABLE `test` ( `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) TYPE=MyISAM;
執行上述 SQL 將報錯:ERROR 1064 (42000): You have an error in your SQL syntax...
將 TYPE=MyISAM 直接替換為 ENGINE=MyISAM 即可:
CREATE TABLE `test` ( `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM;
TYPE 以相容舊腳本,但會發出警告。ENGINE,MySQL 會使用預設儲存引擎(MySQL 5.5+ 預設為 InnoDB)。TYPE=InnoDB、TYPE=MEMORY 等均需改為 ENGINE=...。若需檢查現有 SQL 腳本中是否殘留舊語法,可使用以下命令:
grep -r "TYPE=" /path/to/sql/scripts/
再以 sed 批量替換:
sed -i 's/TYPE=/ENGINE=/g' *.sql
遵循 ENGINE 標準語法,不僅能避免錯誤,也符合現代 MySQL 開發規範。建議在專案遷移或升級資料庫版本時,統一檢查並修正所有建表腳本。