我正在尝试在我的 Linux 服务器上启用 InnDB。我在 ESX 服务器上安装了 Ubuntu 10.04 JeOS。然后我使用 aptitude 安装了 mySQL 和 tomcat。但是当我在 mySQL 中使用 SHOW ENGINES; 时,似乎没有安装 InnoDB。然后我尝试按照文档中的说明进行操作。 http://dev.mysql.com/doc/refman/5.1/en/innodb.html 但是,当我尝试启用插件时出现以下情况:
错误 1123 (HY000):无法初始化函数“InnoDB”;插件初始化函数失败。
我将非常感激关于如何解决这个问题的一些建议。
答案1
我遇到了同样的问题。在 10.04 中,apparmor 不允许 MySQL 读取 InnoDB 插件。将以下几行添加到/etc/apparmor.d/usr.sbin.mysqld
:
/usr/lib/mysql/plugin/r,/usr/lib/mysql/plugin/* mr,
然后重新加载apparmor并重新启动MySQL服务。
答案2
听起来,Jeos 版本的 mysql 软件包出于某种原因决定不将 innodb 编译到二进制文件中。不知道为什么,我的 10.04 桌面确实启用了它。无论如何,默认的 my.cnf 不启用该插件。
假设 innodb 插件文件(ha_innodb_plugin.so 等)位于 /usr/lib/mysql/plugins,您可以按照以下说明启用它。
http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-plugin-installation-dynamic-posix.html
如果 innodb 插件不在该目录中,您可能应该尝试安装常规 ubuntu 的 mysql .deb 或直接从 dev.mysql.com 获取包。
答案3
如果指定,请skip-innodb
在 my.cnf 中注释并重新启动 MySQL。
这些是示例配置提供的设置my-large.cnf
,可以指定这些设置来启用 InnoDB:
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data/
#innodb_log_arch_dir = /usr/local/mysql/data/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 256M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 64M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
答案4
如果您启用 innodb_data_file_path 或编辑该值,则 Innodb 不会启用。因此您必须停止 mysql,并删除数据文件。然后它将以您选择的新文件大小设置启动:
sudo rm /var/lib/mysql/ib* (WARNING this deletes the database)
sudo /etc/init.d/mysql start
service mysql status to check if running
Query ENGINES for Innodb to be YES.
不幸的是,我不知道如何使 Innodb 成为 Ubuntu 10.04 上 Mysql 5.1.61 的默认设置。