我的网站是www.guru99.com。它运行在Joomla 3的最新版本上。
问题是我经常收到类似
的错误“Error displaying the error page: Application Instantiation Error: Unknown storage engine 'InnoDB' SQL=SELECT `session_id` FROM `as23dc_session` WHERE `session_id` = '8590cce07a1ab1952edda6d4c479ad28' LIMIT 0, 1”
然后我将重新启动MySQL,问题将解决。
问题是随时发生错误,我并不总是可以调试。
我在一台专用服务器上,因此服务器使用cloudlinux并为此帐户分配了3GB物理内存和3个内核。仍然是问题。
请指导我哪里出错以及我需要修理什么?
答案 0 :(得分:1)
有一个原因导致MySQL缺少INNODB引擎。如果你的innodb_buffer_pool_size变量太高而MySQL无法分配缓冲区,它将禁用INNODB引擎。
您应该在错误日志中看到类似的内容:
140204 13:12:26 InnoDB: Initializing buffer pool, size = 4.9G
140204 13:12:26 InnoDB: Error: cannot allocate 5242896384 bytes of
InnoDB: memory with malloc! Total allocated memory
InnoDB: by InnoDB 36878736 bytes. Operating system errno: 12
InnoDB: Check if you should increase the swap file or
InnoDB: ulimits of your operating system.
InnoDB: On FreeBSD check you have compiled the OS with
InnoDB: a big enough maximum process size.
InnoDB: Note that in most 32-bit computers the process
InnoDB: memory space is limited to 2 GB or 4 GB.
InnoDB: We keep retrying the allocation for 60 seconds...
140204 13:13:26InnoDB: Fatal error: cannot allocate the memory for the buffer pool
140204 13:13:26 [ERROR] Plugin 'InnoDB' init function returned error.
140204 13:13:26 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
在缓冲池请求4.9G
的情况下,在具有1GB RAM的服务器上记录此错误另外,确保mysql用户可以写入/ tmp。我得到了未知的表引擎InnoDB'恢复后,/ tmp对该用户不可写。
可能没有引擎&InnoDBopt'
尝试show engines;
如果mysql返回类似
的内容+------------+----------+----
| Engine | Support | ...
+------------+----------+----
| InnoDB | DISABLED | ...
最有可能的引擎innodb已被禁用。 在mysql配置中查找选项skip-innodb(例如my.cnf), 注释掉这个选项, 重新启动mysql守护进程,它应该修复