magento -- mysql采用innodb存储引擎

来源:互联网 发布:js如何让按钮消失 编辑:程序博客网 时间:2024/05/27 10:43

mysql的存储引擎有几种,但是从5.0开时大部分是默认采用 innodb存储引擎。innodb存储引擎支持 事务,外键,行数据锁定(当然是相对myisam的表锁定)。magento安装的时候有检查 mysql是否支持innodb存储引擎,如果不支持则不能继续安装而提示如下错误,尽管innodb存储并没有被列为安装magento的前提条件之一。

 

Database server does not support InnoDB storage engine
Database connection error

 

magento论坛中有文章介绍可以通过将magento安装程序中关于检测mysql存储的代码注释掉而绕过这个问题。但是:

 

1,我的mysql到底支不支持innodb,如何查看

 

phpmyadmin 在初始界面,即点击localhost显示的页面,单击engines(中文是存储引擎)既可查看当前的mysql配置是否支持。

 

如果你喜欢在控制台下工作,而没有安装phpmyadmin,也可以通过mysql客户端来查看,登陆后执行

 

show engines;

 

2,如果当前不支持,如何修改配置让mysql启用innodb

 

网站说的比较多的是在配置文件中,如my.cnf中注释掉,如

 

# Comment the following if you are using InnoDB tables
skip-innodb
#innodb_data_home_dir = "/xampplite/mysql/"
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = "/xampplite/mysql/"
#innodb_log_arch_dir = "/xampplite/mysql/"
## You can set .._buffer_pool_size up to 50 - 80 %
## of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
## Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

但是,这个好像不是很管用。我简单查阅了mysql 5.0的手册,没有认真看,里面倒是有这么一句:

The InnoDB storage engine is enabled by default. If you don't want to useInnoDB tables, you can add the skip-innodb option to your MySQL option file.

 

似乎只是说明了如何关闭。显然,明显的意思是默认是打开的。可是就奇怪了,我的配置文件中没有skip那个配置选项却也

是关闭的。在my.cnf中加上

 

default_storage_engine = InnoDB

 

导致重新启动mysql失败

 

3,我怀疑我的二制安装包会不会没带innodb支持,那什么查看二进安装包或已安装的mysql的安装时编译选项,有没有像

smbd -b那样的查看参数呢(目前末查到)

 

InnoDB is included in binary distributions by default。

 

手册中的这句话只能对官方的二进制安装包适用,尽管我相信大部分的二进制安装包都有包含对innodb的支持。

 

最后呢,我将我的my.cnf配置文件中的关于innodb的配置选项分组到一个innodb section中重启后竟然可以。

 

 

注:尽管注释掉magento安装程序中的相应代码可以安装成功,但是那是以牺牲性能为前提而且会带来一系列的问题。因为这样安装下来的magento的数据全部采用MyIsam做存储引擎,不仅速度会慢,而且会造成孤儿记录(Orphaned Record,垃圾数据)。

 

(2011-11-20注:非常重要)

相信有很多的magento开发人员看这篇文章,有初学的有高手,很遗憾,我这篇文章其实有个很严重的错误,我也是才发现。我在另一篇博文中有提到并在此更正,如有被误导者,我深表致歉。请大家看下面的的这篇博文)

mysql - 为magento性能测试修改innodb的innodb_buffer_pool_size而引发的问题

如果你还是不能解决问题,你可以联系我,我非常愿意一起研究讨论,除非非常忙。

 

http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html

http://www.magentocommerce.com/boards/viewthread/33904/P0/

http://www.simplemachines.org/community/index.php?topic=321005.0

http://www.aschroder.com/2009/03/magento-installation-database-server-does-not-support-innodb-storage-engine/

http://www.ecommerceshare.com/articles/how-to-enable-innodb-for-magento-121/

原创粉丝点击