缺少InnoDb引擎

时间:2009-12-05 21:05:46

标签: mysql innodb

我只是查看了我网站的一个数据库,发现所有的表都已转换为MyISAM(它们曾经是InnoDB)。

更多的是InnoDB似乎与BerkeleyDB,Federated和其他人一起失踪。

几个月前,我从MySql 5.0升级到5.1.38。我无法想象,如果升级后没有安装InnoDB,我就不会注意到,但也许自升级以来就是这样。有几个10 GB的表自动将自己转换为MyISAM而不会听到任何停机时间对我来说似乎不太可能。

无论如何,mysql系统变量have_innodb设置为NO。我可以简单地将其更改为YES,或者这是否意味着安装中缺少InnoDB?

4 个答案:

答案 0 :(得分:2)

升级期间可能更改了InnoDB参数? MySQL论坛的这个建议帮助我处理了类似的情况:http://forums.mysql.com/read.php?22,397052,408970

简而言之:停止MySQL守护进程,从datadir中删除ib_logfile*,重启MySQL。

答案 1 :(得分:1)

如果SHOW ENGINES中的字段为“no”,则表示它未编译。您必须再次编译服务器,编译innodb plugin并加载它或获取具有它的服务器二进制文件启用。

答案 2 :(得分:1)

您不能简单地将mysql系统变量设置为YES以将表从MyISAM转换为InnoDB。

ALTER TABLE t1 ENGINE=InnoDB;

如果在创建表语句中使用ENGINE = InnoDB,即使关闭InnoDB支持,该表也将使用MySQL的默认存储引擎,通常是MyISAM。

答案 3 :(得分:0)

也可能是innodb日志文件[01]被破坏的情况。在这种情况下,引擎将显示为已禁用,表格将显示为ISAM。日志会提到它。