MySQL未知表引擎innodb。

3
我正在尝试将Drupal上的测试网站迁移到Amazon EC2上的生产服务器。我使用phpmyadmin迁移了数据库,并尝试访问该网站。但是出现了错误信息:
PDOException: SQLSTATE[42000]:语法错误或访问冲突:1286未知的表引擎'InnoDB':SELECT expire,value FROM {semaphore} WHERE name =:name; 数组([:name]=> variable_init)在lock_may_be_available()中(line 167 of /var/www/includes/lock.inc)。
我认为问题在于MySQL没有InnoDB。我已经查看了my.cnf文件,但没有任何一行标有"skip-innodb"。
我尝试了"show engines"命令,并显示了一堆引擎,但并没有innodb。
我已经尝试重启服务器和删除日志文件,就像之前建议的那样,但这并没有起作用。
也许需要做的是安装Innodb引擎。您能告诉我如何做吗?

你有任何InnoDB配置行吗?例如:#如果您正在使用InnoDB表,请取消注释以下内容 innodb_data_home_dir = - Adrian Cornish
你在那个位置有ibdata1文件吗?并且你能发布SHOW ENGINES的漂亮格式化版本吗? - Adrian Cornish
我不确定应该如何格式化它,但它包括MyISAM、MRG_MYISAM、BLACKHOLE、CSV、MEMORY、FEDERATED(支持=no)和ARCHIVE。 - BBB
在 /var/lib/mysql 和 /etc/mysql 目录下都有一个名为 ibdata1 的文件,但是在 /var/lib/mysql 目录下还有一个名为 ib_logfile0 的文件,而在 /etc/mysql 目录下却没有这个文件,因为我之前已经将其删除了。 - BBB
我将尝试安装一个innodb插件;在MySQL的网站上刚刚发现它。谢谢,如果它起作用,我会更新的。 - BBB
显示剩余2条评论
2个回答

10

在 Debian 6 上,当您更改 innodb_log_file_size 参数时,这种情况也可能发生...有时MySQL无法启动..但其他时间它只是启动但禁用 InnoDB 引擎...因此解决方案是从 /var/lib/mysql 中删除 ib_logfiles 并重新启动 MySQL。


0

请查看您的MySQL错误日志。运行

select @@log_error;

要查看确切的位置。

可能有些东西在里面说明了为什么启动失败。(也许尝试分配比内存更大的缓冲池?)


对不起,请问错误日志在哪里可以找到? 我在/etc/mysql下有一个mysql目录,在/etc/mysql/mysql下也有一个mysql目录,还有一个/var/lib/mysql目录。 另外,当我打开/var/lib/mysql中的ib_logfile0时,它会产生一些奇怪的字符。 - BBB
我尝试通过运行select @@log_error; 查询来指示错误日志的位置。 这将准确地告诉您它在哪里。它可能在/var/log/mysql/mysql.err中。这个服务器上一直使用Innodb吗? 您是否尝试只是从另一个服务器复制ibdata文件? - atxdba
感谢您的帮助;我实际上只是终止了 EC2 实例并创建了一个新的;如果问题仍然存在,我会告诉您。 - BBB
我创建了一个新的EC2实例,一切都很好。不过,我首先安装了Drupal,这可能是我的问题所在。然而,对我来说仍然是相当神秘的。谢谢。 - BBB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接