MySQL报错不支持的引擎(mysql 不支持的引擎)
MySQL报错:不支持的引擎
在使用MySQL进行数据库操作时,有时会遇到“不支持的引擎”报错,这个问题通常是由于MySQL数据库版本与引擎不匹配导致的。本文将介绍如何解决这个问题。
造成问题的原因
MySQL支持多种不同的存储引擎,如InnoDB、MyISAM、Memory等。但并不是所有的MySQL版本都能支持所有的存储引擎,因此在创建表时需要注意选择相应的引擎。
如果MySQL数据表使用了不支持的引擎,或者创建表时选择的引擎与MySQL版本不匹配,就会出现“不支持的引擎”报错。例如,在MySQL 5.5版本以上的数据库中,不支持使用“TYPE=MyISAM”来指定表类型。
解决方法
确定MySQL版本
在解决这个问题之前,首先需要确定当前使用的MySQL版本。可以通过以下命令来查询MySQL版本:
mysql --version
例如,查询结果为:
mysql Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper
这说明当前使用的MySQL版本是5.7.26。
查看引擎支持情况
在确定MySQL版本后,可以查看所支持的存储引擎。可以在MySQL命令行中运行如下命令进行查询:
SHOW ENGINES;
这将显示MySQL所支持的存储引擎列表,包括当前支持的默认引擎以及其他支持的引擎。例如,下面是MySQL 5.7.26支持的存储引擎列表:
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| CSV | YES | CSV storage engine | NO | NO | NO || MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO || BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO || ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MEMORY_TABLE | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
根据上述输出,可以看出MySQL 5.7.26支持以下存储引擎:MEMORY、InnoDB、CSV、MyISAM、MRG_MYISAM、BLACKHOLE、PERFORMANCE_SCHEMA、ARCHIVE和MEMORY_TABLE。
修改MySQL代码
如果查询发现当前使用的存储引擎不被支持,可以通过修改MySQL代码来解决问题。在MySQL创建表时,可以使用“ENGINE”选项来指定表类型,例如:
CREATE TABLE mytable (
`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上述代码中,“ENGINE=InnoDB”指定了创建表时使用InnoDB存储引擎。
总结
“不支持的引擎”报错通常是由于MySQL版本与存储引擎不匹配导致的。要解决这个问题,需要确定当前使用的MySQL版本以及MySQL所支持的存储引擎,并在创建表时选择合适的引擎。同时也可以通过修改MySQL代码来指定所需的存储引擎。