mysql不支持innodb的解决办法

要解决这个问题,有以下两种办法

1、首先查看你的mysql是否支持innodb
a、disabled说明innodb引擎已经存在,只是被禁用了,只要开启就好了,修改my.cnf,把innodb=OFF修改为innodb=On,或者注销掉innodb=OFF这一行,然后重启mysql,innodb就可用了
mysql> show variables like ‘%have_innodb%’;
+—————+———-+
| Variable_name | Value |
+—————+———-+
| have_innodb | DISABLED |
+—————+———-+
1 row in set (0.00 sec)
b、如果have_innodb为No
mysql> show variables like ‘%have_innodb%’;
+—————+———-+
| Variable_name | Value |
+—————+———-+
| have_innodb | NO |
+—————+———-+
查看是否支持动态加载插件
mysql> show variables like “have_dynamic%”;
+———————-+——-+
| Variable_name | Value |
+———————-+——-+
| have_dynamic_loading | YES |
+———————-+——-+
1 row in set (0.00 sec)
显示为yes表示支持动态加载mysql插件,该值一般为yes,
当使用源码编译安装时不能使用–with-mysqld-ldflags=-all-static选项,以静态方式编译库,这样默认就会是yes,执行以下操作动态加载插件
(如果显示为No,则需要重新编译Mysql,因为have_dynamic_loading这个参数是只读参数)
放入插件文件,找到mysql存放插件的目录
mysql> show variables like ‘plugin_dir’;
+—————+———————————–+
| Variable_name | Value |
+—————+———————————–+
| plugin_dir | /usr/local/mysql/lib/mysql/plugin |
+—————+———————————–+
1 row in set (0.00 sec)
在该目录中查看是否已有ha_innodb.so和ha_innodb_plugin.so两个文件
若没有可以去网上下载与所安装mysql对应的版本,或者直接去mysql源码包中storage/innobase/.libs/ha_innodb.so
添加动态安装加载
mysql> INSTALL PLUGIN InnoDB SONAME ‘ha_innodb.so’;
Query OK, 0 rows affected (0.61 sec)
查看现在是否支持innodb
mysql> show plugins;
也可以用以下方法删除innodb支持
mysql> UNINSTALL PLUGIN innodb;

2、还可以重新编译mysql
mysql不支持innodb,说明在对mysql进行编译安装时,缺少支持innodb的参数
–with-plugins=innobase 或者–with-plugins=all #这是在5.5版本前
–DWITH_INNOBASE_STORAGE_ENGINE=1 #这是在5.5以后版本,用cmake编译时支持innodb所用的参数
编译完成了之后,重新安装mysql就发现可以支持innodb了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注