未知的表引擎'InnoDB'

问题描述:

最近,我发现,如果我有很好的硬件,我可以最大化mysql性能。由于我一直使用的是InnoDB我添加额外的配置成的my.ini未知的表引擎'InnoDB'

这里是新增加的配置:

innodb_data_file_path = ibdata1:10M:autoextend 
innodb_buffer_pool_size = 2G 
innodb_additional_mem_pool_size = 2M 
innodb_log_file_size = 256M 
innodb_log_buffer_size = 8M 
innodb_flush_log_at_trx_commit = 1 
innodb_lock_wait_timeout = 120 

然后我重新启动所有的服务。但是当我使用我的程序时,发生错误“未知表引擎'InnoDB'”。

我试图解决这个问题:

  1. 我删除日志文件重新启动该服务,但我仍然得到了错误。

我刚刚重试删除日志文件并重新启动服务,它的工作原理! 但是要小心2G分配,因为innodb可能不会编译,如果2G不起作用请使用1G

+1

这是位于/ var/lib中/ MySQL的/我(的chroot-ED),它也可以发现@在/ usr /本地/ MySQL的/ data/ –

+0

另一个可能的日志位置是/ mysqldb/logs/ – MarkHu

+2

只是删除日志文件并重新启动mysql为我工作..谢谢 – Sree

其他解决方案没有解决我的问题。 InnoDB引擎在调整配置后被禁用。

去除borked ib_ *登录MySQL数据目录文件固定我的问题,并允许我使用2G缓冲池InnoDB的: http://www.turnkeylinux.org/forum/support/20090111/drupal-6-problem-enable-innodb#comment-131

+0

这是我的问题;关闭mysql,删除ib_logfile [01]文件,重启mysql,一切正常。 – pdwalker

我也遇到了这个问题为好。问题是我给InnoDB分配的内存比变量innodb_buffer_pool_size的服务器多。 MySQL并没有抱怨没有能够在其日志中分配这些内存。

从备份恢复时出现此问题。问题是我在my.ini中有一些不同的设置。所以如果有人遇到这个问题,请确保设置相同的设置(复制my.ini),停止MySQL服务,然后恢复整个数据文件夹,然后再次启动MySQL服务。

1.检查,看是否已启用InnoDB支持:

mysql> show variables like 'have_innodb'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| have_innodb | YES | 
+---------------+-------+ 
1 row in set (0.00 sec) 

2.如果上面的值被禁用,那么你就需要启用InnoDB的。

3.打开MySQL的配置文件。

  • 的Windows:在各种平台上,配置文件可以在文件名和位置不同,$ MYSQL_INSTALL_DIRECTORY/my.ini的

  • 的Linux/Unix:/etc/mysql/my.cnf

4.如果参数跳innodbis注释掉/存在,那么只需将其注释掉:

# skip-innodb 

5。关闭MySQL服务器,删除/重命名MySQL的日志刷新整个服务器的日志,并重新启动MySQL服务器:

  • 的Linux:

    ~$: /etc/init.d/mysql stop

    ~$: rm /var/lib/mysql/ib_logfile*

    ~$: /etc/init.d/mysql start

  • Windows:

    转至$ MYSQL_INSTALL_DIRECTORY/data并删除/移动前缀为ib_logfile的日志文件。

如果你完全破坏你的my.cnf文件,你有另一个选择是用mysql安装的默认配置替换它。对于Linux:

您有以下选项,

/usr/share/mysql/my-huge.cnf 
/usr/share/mysql/my-innodb-heavy-4G.cnf 
/usr/share/mysql/my-large.cnf 
/usr/share/mysql/my-medium.cnf 
/usr/share/mysql/my-small.cnf 

下面是一个例子来安装它:

#backup original config 
mv /etc/my.cnf{,.bak} 

#copy new my.cnf from template 
cp /usr/share/mysql/my-large.cnf /etc/my.cnf 

这些选项的详细信息,请http://dev.mysql.com/doc/mysql/en/option-files.html

我试着所有这些(和许多其他),但对我而言,一种可行的方法是:

  • 停止MySQL服务器
    /etc/init.d/mysql stop
  • 删除日志文件
    rm ib_logfile0 ib_logfile1
  • 重命名InnoDB的文件(如果没有别的办法,因为这将重新创建) mv ibdata1 old_ibdata1
  • 我有这个CONFIGS在/etc/mysql/my.cnf - >即使您没有指定,MySql将使用默认值。

    [mysqld] 
    datadir=/data/mysql/data 
    socket=/var/run/mysqld/mysqld.sock 
    
    #Not a must to define the following 
    innodb_log_file_size=1G 
    innodb_file_per_table=1 
    innodb_flush_method=O_DIRECT 
    innodb_buffer_pool_size=1G 
    innodb_data_file_path=ibdata1:10M:autoextend 
    innodb_lock_wait_timeout=18000 
    
  • 启动MySQL服务器
    /etc/init.d/mysql start

+0

是的,如果配置一切正常,删除日志文件一直工作。 – rechie

+0

您刚刚保存了整个托管公司的未来.... – spetsnaz