MySQL数据库引擎的转换

2026-03-09 19:27:42

1、查看当前MySQL数据库的默认引擎

mysql> show engines;

MySQL数据库引擎的转换

2、能看出当前默认的存储引擎是InnoDB,还有MyISAM引擎也是经常会用的一种存储引擎。

3、要转换已经有数据的表的存储引擎,主要有三种方法:

一种是直接用alter命令转换

一种是mysqldump导出,修改存储引擎后,再导入

一种是创建一个新表,再用insert...select导入数据

4、直接用alter命令转换

先查询表的存储引擎

mysql> show create table test;

MySQL数据库引擎的转换

5、可以看出,test这个表的存储引擎为InnoDB,现在我们把test这个表强制转换成MyISAM引擎

mysql> alter table test engine=myisam;

MySQL数据库引擎的转换

6、如果数据量较大,这种方法会需要花比较长的时间,而且在转换的过程中,原表会加上读锁。

7、mysqldump导出,修改存储引擎后,再导入

先用mysqldump命令导出,再修改导出文件里面的存储引擎信息,然后再导入。在导入前,需要对原表进行删除或者改名才行。

# mysqldump -uroot -p --databases haibing --tables test > test_table.sql

MySQL数据库引擎的转换

8、编辑导出的文件,修改里面的存储引擎

# vim test_table.sql

MySQL数据库引擎的转换

9、把其中的“ENGINE=MyISAM”改成“ENGINE=InnoDB”

MySQL数据库引擎的转换

10、导入前,我们先修改原先的表名,因为一个数据库中不能有重名的表。

mysql> alter table test rename to old_test;

修改完原先的表名,导入前面修改的文件

mysql > source test_table.sql

MySQL数据库引擎的转换

11、创建一个新表,再用insert...select导入数据

创建一个跟原先表结构一样的新表,然后在没有数据的情况下修改存储引擎,再用insert...select从旧表中导入新表中

创建一个跟旧表test结构一样的新表new_test

mysql> create table new_test like test;

修改新表的存储引擎

mysql > alter table new_test engine=myisam;

把旧表test中的数据导入到新表new_test中

mysql> insert into new_test select * from test;

如果确认没问题的话,可以删除旧表,再把新表改名。

MySQL数据库引擎的转换

猜你喜欢