magento -- mysql采用innodb存储引擎

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 use InnoDB 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值