首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 表引擎版本不一致錯誤:TYPE=MyISAM → ENGINE=MyISAM 修正指南

     編輯:MySQL 綜合教學

錯誤現象

mysql error 'TYPE=MyISAM'

使用舊版客戶端(如 Navicat 8)操作 MySQL 5.6+ 時,匯出/建表 SQL 仍含已棄用的 TYPE=MyISAM 導致執行失敗。

根本原因

MySQL 5.1 起廢除 TYPE 關鍵字,統一改為 ENGINE。舊工具產出的 DDL 不相容。

快速修正

  1. 在 SQL 腳本中全域替換:
    TYPE=MyISAM → ENGINE=MyISAM
    TYPE=InnoDB → ENGINE=InnoDB
  2. 或直接執行修改引擎指令:
    ALTER TABLE db.user ENGINE = MyISAM;

查看當前引擎與支援清單

指令用途
SHOW ENGINES;列出所有支援引擎及預設/可用狀態
SHOW VARIABLES LIKE '%storage_engine%';查看預設儲存引擎
SHOW CREATE TABLE table_name;查看單表建表語句(含 ENGINE)
SHOW TABLE STATUS FROM db_name;查看庫內所有表引擎(Engine 欄)

主流引擎特性速查

  • MyISAM:非交易、表鎖、全文索引、讀多寫少、預設引擎(≤5.5)。
  • InnoDB:交易安全、行鎖、外鍵、MVCC、崩潰恢復、預設引擎(≥5.5.5)。
  • MEMORY/HEAP:記憶體表、極速、重啟資料消失。
  • CSV/ARCHIVE/BLACKHOLE/FEDERATED:特殊用途(日誌歸檔、異構聯邦查詢等)。

建表/修改引擎範例

CREATE TABLE discuz.cdb_user (...) ENGINE = InnoDB;
ALTER TABLE discuz.cdb_user ENGINE = InnoDB;

避坑提醒

  • 升級 MySQL 版本後,檢查應用程式產出的 DDL 是否仍含 TYPE=。
  • 使用 mysqldump --compatible=mysql40 導出舊版相容腳本時會產生 TYPE,導入新版需手動替換。
  • Navicat 等 GUI 工具請升級至支援目標 MySQL 版本的最新版。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved