【问题标题】:Unknown table engine 'InnoDB'未知的表引擎“InnoDB”
【发布时间】:2011-09-05 01:09:43
【问题描述】:

最近,我发现如果我有好的硬件,我可以最大限度地提高 mysql 的性能。由于我一直在使用 InnoDB,因此我在 my.ini 中添加了其他配置

新增配置如下:

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

然后我重新启动所有服务。但是当我使用我的程序时,出现了一个错误“Unknown table engine 'InnoDB'”。

我试图解决这个问题的方法:

  1. 我删除了日志文件重启服务,但还是报错。

【问题讨论】:

    标签: mysql innodb


    【解决方案1】:

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

    删除 mysql 数据目录中的 ib_* 日志文件解决了我的问题,并允许我为 InnoDB 使用 2G 缓冲池: http://www.turnkeylinux.org/forum/support/20090111/drupal-6-problem-enable-innodb#comment-131

    【讨论】:

    • 那是我的问题;关闭mysql,删除ib_logfile[01]文件,重启mysql,一切正常。
    • 非常感谢,你让我开心。
    【解决方案2】:

    我刚刚重试删除日志文件并重新启动服务,它可以工作! 但要注意分配2G,因为innodb可能无法编译,如果2G不起作用,请使用1G

    【讨论】:

    • 对我来说这是在 /var/lib/mysql/(chroot-ed),也可以在 @/usr/local/mysql/data/ 找到它
    • 只是删除日志文件并重新启动 mysql 对我有用..谢谢
    【解决方案3】:

    我也遇到过这个问题。问题是我为 InnoDB 分配的内存比服务器使用变量 innodb_buffer_pool_size 分配的内存更多。 MySQL 并没有抱怨无法在其日志中分配内存。

    【讨论】:

      【解决方案4】:

      我尝试了所有这些(以及许多其他方法),但对我有用的一种方法是:

      • 停止 MySql 服务器
        /etc/init.d/mysql stop
      • 删除日志文件
        rm ib_logfile0 ib_logfile1
      • 重命名 InnoDB 文件(如果没有其他工作,因为它将被重新创建) mv ibdata1 old_ibdata1
      • 我在/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

      【讨论】:

      • 是的,如果配置一切正常,删除日志文件一直有效。
      【解决方案5】:

      如果你完全破坏你的 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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          在 MariaDB 10.1 中,应禁用 ignore-builtin-innodb 选项以停止修复错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-02
            • 2023-03-30
            • 2011-05-29
            • 1970-01-01
            相关资源
            最近更新 更多