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代码来指定所需的存储引擎。


数据运维技术 » MySQL报错不支持的引擎(mysql 不支持的引擎)