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

解決 MySQL 中 TYPE=MyISAM 語法錯誤的完整指南

     編輯:MySQL 資料庫相關知識

問題背景

在 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;

補充說明

  • 向下相容性:MySQL 5.1 仍支援 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 開發規範。建議在專案遷移或升級資料庫版本時,統一檢查並修正所有建表腳本。

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