Warning: Some non-transactional changed tables couldn't be rolled back
事務中混用了事務型引擎(InnoDB)與非事務型引擎(MyISAM、MEMORY、CSV 等)。非事務型表的修改即時生效,ROLLBACK 無法撤銷。
CREATE TABLE t (...) ENGINE=MyISAM 但以為默認是 InnoDB--default-storage-engine=MyISAM 或禁用 InnoDBENGINE=FEDERATED)導致靜默降級為 MyISAM-- 1. 查看單表引擎
SHOW TABLE STATUS LIKE 'tbl_name'\G
-- 關注 Engine 欄位
-- 2. 查看建表語句
SHOW CREATE TABLE tbl_name\G
-- 3. 查看服務器支持的引擎
SHOW ENGINES\G
-- Support 欄:YES/DEFAULT = 可用,NO = 不可用,DISABLED = 禁用
-- 4. 查看引擎相關變量
SHOW VARIABLES LIKE 'have_%';
-- have_innodb = YES 表示 InnoDB 可用
ALTER TABLE t ENGINE=InnoDB;(鎖表操作,大表慎用,建議 pt-online-schema-change)[mysqld] default-storage-engine=InnoDB--skip-innodb、--disable-innodb@Table(engine = "InnoDB") 強制指定SHOW TABLE STATUS 掃描,阻斷非 InnoDB 表上線MySQL 5.7+ 默認
default-storage-engine=InnoDB,新建表極少踩坑;遷移舊系統、跨版本升級時必須全庫掃描引擎類型。