我只是查看了我网站的一个数据库,发现所有的表都已转换为MyISAM(它们曾经是InnoDB)。
更多的是InnoDB似乎与BerkeleyDB,Federated和其他人一起失踪。
几个月前,我从MySql 5.0升级到5.1.38。我无法想象,如果升级后没有安装InnoDB,我就不会注意到,但也许自升级以来就是这样。有几个10 GB的表自动将自己转换为MyISAM而不会听到任何停机时间对我来说似乎不太可能。
无论如何,mysql系统变量have_innodb设置为NO。我可以简单地将其更改为YES,或者这是否意味着安装中缺少InnoDB?
答案 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。日志会提到它。