用show engines\G;命令发现
*************************** 1. row ***************************
      Engine: MyISAM
     Support: DEFAULT
     Comment: Default engine as of MySQL 3.23 with great performance
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
7 rows in set (0.01 sec)居然没有innodb引擘,查看mysql版本select @@version;
显示5.1.41-community-log安装的时候是用的 rpm包,有没有人碰到过类似问题?怎么解决?

解决方案 »

  1.   

    ps -aux|grep mysqld看一下启动选项。另外再看一下你的my.cfg中的设置。
      

  2.   

    #*** INNODB Specific options ***
    打开你的my.ini文件,找到如下内容,
    注意看其中有这句:# skip-innodb 检查这里是否注释掉了,如果没有注释,那就对了,就是这个原因,你加上注释就可以了。# Use this option if you have a MySQL server with InnoDB support enabled
    # but you do not plan to use it. This will save memory and disk space
    # and speed up some things.
    # skip-innodb# Additional memory pool that is used by InnoDB to store metadata
    # information.  If InnoDB requires more memory for this purpose it will
    # start to allocate it from the OS.  As this is fast enough on most
    # recent operating systems, you normally do not need to change this
    # value. SHOW INNODB STATUS will display the current amount used.
    innodb_additional_mem_pool_size=2M# If set to 1, InnoDB will flush (fsync) the transaction logs to the
    # disk at each commit, which offers full ACID behavior. If you are
    # willing to compromise this safety, and you are running small
    # transactions, you may set this to 0 or 2 to reduce disk I/O to the
    # logs. Value 0 means that the log is only written to the log file and
    # the log file flushed to disk approximately once per second. Value 2
    # means the log is written to the log file at each commit, but the log
    # file is only flushed to disk approximately once per second.
    innodb_flush_log_at_trx_commit=1# The size of the buffer InnoDB uses for buffering log data. As soon as
    # it is full, InnoDB will have to flush it to disk. As it is flushed
    # once per second anyway, it does not make sense to have it very large
    # (even with long transactions).
    innodb_log_buffer_size=1M# InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and
    # row data. The bigger you set this the less disk I/O is needed to
    # access data in tables. On a dedicated database server you may set this
    # parameter up to 80% of the machine physical memory size. Do not set it
    # too large, though, because competition of the physical memory may
    # cause paging in the operating system.  Note that on 32bit systems you
    # might be limited to 2-3.5G of user level memory per process, so do not
    # set it too high.
    innodb_buffer_pool_size=16M# Size of each log file in a log group. You should set the combined size
    # of log files to about 25%-100% of your buffer pool size to avoid
    # unneeded buffer pool flush activity on log file overwrite. However,
    # note that a larger logfile size will increase the time needed for the
    # recovery process.
    innodb_log_file_size=10M# Number of threads allowed inside the InnoDB kernel. The optimal value
    # depends highly on the application, hardware as well as the OS
    # scheduler properties. A too high value may lead to thread thrashing.
    innodb_thread_concurrency=8
      

  3.   

    #skip-innodb是注释掉的,重启服务后还是没有再看一下你的my.cfg中的设置。是否指my.cnf?ps -aux|grep mysqld 后显示
    root      5640  0.2  0.1  3256 1140 pts/0    S    22:10   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/yczealot.pid
    mysql     5843  0.2  4.9 155472 31208 pts/0  Sl   22:10   0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/yczealot.err --open-files-limit=8192 --pid-file=/var/lib/mysql/yczealot.pid --socket=/var/lib/mysql/mysql.sock --port=3306
    root      5972  0.0  0.0  2592  488 pts/0    S+   22:13   0:00 grep mysqld
      

  4.   

    是的,是指你 /etc/my.cnf
    如果其中 #skip-innodb  则没有问题。你的启动先项也没有问题。/usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/yczealot.err --open-files-limit=8192 --pid-file=/var/lib/mysql/yczealot.pid --socket=/var/lib/mysql/mysql.sock --port=3306你是如何安装的?自己编译的?
      

  5.   

    确实没有遇到过这个问题,我用的都是编译好的版本,windows下的都是安装版本。
      

  6.   

    1. 检查你的配置文件,看有没有SKIP-INNODB选项。
    2. 检查你的错误日志,看有没有关于INNODB的启动错误。
    3. 如果上面两个其中有一, 修改或者重新编译,或者查看磁盘空间以及权限。