2009-12-05 85 views
2

我刚刚查看了一个我的网站的数据库,并注意到所有表都已转换为MyISAM(他们曾经是InnoDB)。缺少InnoDb引擎

更重要的是,InnoDB似乎与BerkeleyDB,Federated和其他人一样缺失。

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

无论如何,mysql系统变量has_innodb被设置为NO。我可以简单地将其更改为“是”还是意味着InnoDB从安装中丢失?

回答

1

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

1

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

ALTER TABLE t1 ENGINE=InnoDB; 

当支持InnoDB被关闭,即使是你在CREATE TABLE语句中使用ENGINE = InnoDB中,该表将使用MySQL的默认存储引擎通常是MyISAM数据。

0

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