admin管理员组

文章数量:1640620

问题描述:初始化数据库创建表时出现如下错误:

错误代码:3161
3161 - Storage engine MyISAM is disabled (Table creation is disallowed).

此错误也经常出现在阿里云RDS数据库与本地数据库数据互相迁移过程中


原因分析:MySQL在8.0以后不在默认支持MyISAM 引擎,默认的支持引擎为:InnoDB,MySQL官方的说明:

In MySQL 8.0, it is normally necessary to use ENGINE to specify the MyISAM storage engine because InnoDB is the default engine.

官方链接:https://dev.mysql/doc/refman/8.0/en/myisam-storage-engine.html


解决办法

1、查看当前数据库版本,确认是否是8.x或以上

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.10    |
+-----------+
1 row in set (0.05 sec)

2、如果是8.x版本的数据库,需要将创表语句中的引擎改为InnoDB

--报错SQL语句/incorrect create table sql:
CREATE TABLE t (i INT) ENGINE = MyISAM;
--修正后/new creat table sql(amended):
CREATE TABLE t (i INT) ENGINE = InnoDB;

另一种解决方案 :修改本地/云数据库的默认引擎(不推荐)


1、查看系统支持的存储引擎
show engines;

2、查看表使用的存储引擎

两种方法:

show table status from `db_name` where name='table_name';

show create table table_name;

3、修改表引擎方法

alter table table_name engine=innodb;

4、关闭Innodb引擎方法

关闭mysql服务:

net stop mysql

找到MySQL安装目录下的my.ini文件:

找到default-storage-engine= MyISAM 改为:default-storage-engine=InnoDB

找到skip-innodb 改为:#skip-innodb

删除下面文件前需要备份:

C:\Program Files\MySQL\MySQL Server 5.0\data\ib_logfile* 
C:\MySQL Datafiles\ibdata*  

启动mysql服务:

net start mysql

可能使用到的资源链接:

◆ 关于MyISAM InnoDB 引擎的区别:MySQL 两种存储引擎: MyISAM和InnoDB 简单总结

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn/article/details/120995180
[ 最后更新 ]   06/24/2023 18:55
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

本文标签: 解决办法StorageEnginemysqlCreation