如何更改MySQL数据库表的数据库引擎?


首先,确定MySQL数据库的类型,即其引擎是InnoDB还是MyISAM。为此,请使用information_schema.columns.tables中的engine列。

语法如下所示。

SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = ’yourDatabaseName’
AND TABLE_NAME = ’yourTableName’;

这里,我有一个名为“StudentInformations”的表:

mysql> create table StudentInformations
   -> (
   -> StudentId int not null auto_increment,
   -> StudentFirstName varchar(20),
   -> StudentLastName varchar(20),
   -> Primary Key(StudentId)
   -> );
Query OK, 0 rows affected (0.57 sec)

现在,您可以使用上述语法的实现来了解该表是使用InnoDB还是MyISAM。我们的数据库是“test”。

相同的查询如下所示:

mysql> select engine from information_schema.tables
   -> where table_schema = 'test'
   -> and table_name = 'StudentInformations';

以下是输出:

+--------+
| ENGINE |
+--------+
| InnoDB |
+--------+
1 row in set (0.05 sec)

使用alter命令更改“StudentInformations”表的引擎。更改任何表的引擎的语法如下所示。

ALTER TABLE yourTableName ENGINE = ‘yourEngineName’;

现在让我们将引擎从InnoDB更改为MyISAM。查询如下所示:

mysql> alter table StudentInformations ENGINE = 'MyISAM';
Query OK, 6 rows affected (1.84 sec)
Records − 6 Duplicates − 0 Warnings − 0

上面显示的结果表明受影响的行数为6,因为表中有6行。

要检查表是否已从InnoDB转换为MyISAM,查询如下所示:

mysql> select engine from information_schema.tables
-> where table_schema = 'test'
-> and table_name = 'StudentInformations';

以下是显示引擎已成功更新的输出:

+--------+
| ENGINE |
+--------+
| MyISAM |
+--------+
1 row in set (0.00 sec)

更新于:2019年7月30日

浏览量:378

启动您的职业生涯

通过完成课程获得认证

开始学习
广告