mysql数据库报错[Err] 1286 - Unknown storage engine ‘InnoDB‘

本文针对MySQL数据库出现[Err] 1286错误,即不识别InnoDB存储引擎的问题进行解决。首先,通过`show engines;`命令检查InnoDB引擎是否缺失,接着分析日志找出问题,如ibdata1文件内容错误。解决方案包括删除ibdata1文件及日志文件,修改my.ini配置文件启用InnoDB引擎。此外,还提到了ib文件的相关设置,如在配置文件中搜索`default-storage-engine`并修改为`INNODB`。完成这些步骤后,重启MySQL服务,InnoDB引擎即可正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:支持innodb还是报错

1.我用的是MySql5.5版本。先用命令->"show engines;"查看一下引擎详情:

2.发现并没有innodb这个条目,然后我们查看日志文件,不知道windowns日志文件位置的可以用命令

 ->"show variables like '%error%';"查看

3.无错误记录跳转到方法二,有错误请继续往下

然后:在日志中我们发现:

错误在于ibdata1文件内容有误。

接下来,我们关闭数据服务,删除安装目录下的ibadata1文件,和错误日志同目录下的两个文件:看下图

删除成功后,更改my.ini文件参数。

 

1

2

3

4

5

6

7

8

9

innodb_buffer_pool_size = 256M

 

innodb_log_file_size  = 256M

 

innodb_thread_concurrency = 16

 

innodb_flush_log_at_trx_commit = 2

 

innodb_flush_method  = normal

其中innodb_flush_method = normal是最后补进去的,其他的参数原来配置文件中都有。

更改完成后,保存并从新启动mysql服务。

再次执行-》show engines;

发现innoDB已经可以使用了,这样就表示成功了。

再次去运行刚才的文件就能完美运行了。

二:ib文件问题

1.  打开 mysql.ini 找到 

2.  搜索 “default-storage-engine”

3.  #支持 INNODB 引擎模式。修改为  default-storage-engine=INNODB  即可。 
     #如果 INNODB 模式如果不能启动,删除 data 目录下 ib 开头的日志文件重新启动

作为一名合格的PHP不仅需要好的代码编写能力,还需要掌握服务器相关知识,下面给大家推荐腾讯云搞活动的服务器,刚开始不需要服务器配置太好,纯当练手!点击链接查看官方活动https://cloud.tencent.com/act/cps/redirect?redirect=1067&cps_key=32f906e6e5f3be5e8669b35951da56fc&from=console

### 解决方案 对于遇到的 `ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables` 或者类似的错误提示,这通常发生在尝试使用 MyISAM 存储引擎来创建或操作系统表时。然而,在现代版本的 MySQL 中,默认存储引擎已经切换到了 InnoDB。 当面对 `'Storage engine InnoDB does not support system tables mysql.user'` 这样的错误信息时,实际上是因为某些特定的操作试图访问由旧版 MySQL 创建的数据文件结构,而这些数据文件可能仍然依赖于 MyISAM 引擎[^1]。 #### 处理方法 为了修复这个问题并确保所有系统表都正确地转换为 InnoDB 类型,可以采取以下措施: - **确认当前使用的存储引擎** 首先检查现有的系统表所采用的是哪种存储引擎: ```sql SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='mysql'; ``` - **更新系统表至InnoDB** 如果发现任何系统表仍在使用 MyISAM,则可以通过升级脚本来将其迁移到 InnoDB 上。官方提供了专门用于此目的的工具——`mysql_upgrade`命令可以帮助完成这项工作,并且会自动处理必要的更改。 执行该命令前建议先关闭 MySQL 服务再重启它以应用新的配置设置: ```bash net stop mysql; mysqld --upgrade=FORCE; net start mysql; ``` 注意这里假设操作系统环境为 Windows;如果是 Linux 则相应的命令应该是 `sudo service mysql restart`. - **重建权限表** 另外一种情况可能是由于权限表损坏引起的此类问题。此时可考虑通过重置整个权限子系统的方式来解决问题。具体做法如下所示: 停止 MySQL 服务器之后,运行初始化命令重新建立默认账户和权限设定: ```bash mysqld --initialize-insecure --user=mysql ``` 接着再次启动 MySQL 并立即进入安全模式下修改 root 密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword!'; FLUSH PRIVILEGES; EXIT; ``` 此过程将会覆盖原有的用户定义以及权限分配,请提前做好充分准备以免造成不必要的影响。 - **其他注意事项** 对于那些报告了类似 `ERROR 1449 (HY000)` 的案例来说,往往涉及到视图定义中的 "definer" 属性丢失的情况。这类问题一般不需要特别针对存储引擎做调整,而是应该关注如何恢复缺失的用户账号或是修正相关的视图定义语句[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值