INNODB mysql。 插件已禁用

当我在我的unbuntu服务器上启动mysql时,会收到一条消息。

121122 17:39:37 [Note] Plugin 'FEDERATED' is disabled. 121122 17:39:37 InnoDB: The InnoDB memory heap is disabled 121122 17:39:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins 121122 17:39:37 InnoDB: Compressed tables use zlib 1.2.3.4 121122 17:39:37 InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12 121122 17:39:37 InnoDB: Completed initialization of buffer pool 121122 17:39:37 InnoDB: Fatal error: cannot allocate memory for the buffer pool 121122 17:39:37 [ERROR] Plugin 'InnoDB' init function returned error. 121122 17:39:37 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 121122 17:39:37 [ERROR] Unknown/unsupported storage engine: InnoDB 121122 17:39:37 [ERROR] Aborting 121122 17:39:37 [Note] mysqld: Shutdown complete 

有几次我收到一条消息,说这个插件是被禁用的。

我使用webmin来configuration它。 这可能是一个问题吗?

正如CloudWeavers提到的,你没有足够的内存(包括交换)。 如果你想运行在这个configuration中,可以定义一个额外的交换文件

 dd if=/dev/zero of=/swap.img bs=1M count=512 mkswap -f /swap.img echo '/swap.img none swap sw 0 0' >> /etc/fstab swapon -a sudo chown root:root /swap.img sudo chmod 0600 /swap.img 

对于根分区上的512MB交换文件(即实际的文件)(这实际上是一个黑客让你走 – 这不是一个最佳实践configuration)或降低你的innodb_buffer_pool_size到一个较小的值(再次不build议,这是InnoDB引擎的一个重要的调整variables,不应该轻易改变)

 sed -i 's/^.+innodb_buffer_pool_size.+/innodb_buffer_pool_size=32M/' /etc/my.cnf service mysqld restart 

你的问题是:

 InnoDB: mmap(137363456 bytes) failed; errno 12 

而且,如果你在GNU / Linux上,我们可以理所当然地认为:

 Errno 12: ENOMEM 

这意味着在存储器映射期间InnoDB初始化失败。 你没有足够的内存可用。 我想你没有任何交换定义(检查“免费-m”),你没有128MB免费的InnoDB插件?

这个错误会自动使插件进入“禁用”状态,并阻止您使用innodb表。