MySQL 未知的表引擎“InnoDB”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7303133/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 20:59:58  来源:igfitidea点击:

Unknown table engine 'InnoDB'

mysqlinnodb

提问by rechie

Recently, I have found out that I can maximize mysql performance when if I have good hardware. Since I've been using InnoDB I added additional configuration into my.ini

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

Here is the newly added configurations:

下面是新添加的配置:

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

Then I restart all of the services. But when I used my program, an error occurred "Unknown table engine 'InnoDB'".

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

What I have tried to solve this problem:

我试图解决这个问题:

  1. I delete the log file the restart the service but I still got the error.
  1. 我删除了重新启动服务的日志文件,但仍然出现错误。

回答by aaronbauman

Other solutions did not fix my problem. InnoDB engine was disabled after adjusting config.

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

Removing borked ib_* log files in mysql data dir fixed my issue, and allowed me to use 2G buffer pool for InnoDB: http://www.turnkeylinux.org/forum/support/20090111/drupal-6-problem-enable-innodb#comment-131

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

回答by rechie

I just retried deleting the logfile and restarted the services, and it works! But beware of allotting 2G because innodb might not compile, please use 1Gif 2G doesn't work.

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

回答by Sean McCleary

I have ran into this problem as well. The problem was that I was allocating more memory to InnoDB than the server had with the variable innodb_buffer_pool_size. MySQL did not complain about not being able to allocate the memory in its logs about this.

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

回答by biniam

I tried all of those (and many others) but the one method that workedfor me is:

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

  • Stop MySql Server
    /etc/init.d/mysql stop
  • Delete the log files
    rm ib_logfile0 ib_logfile1
  • Rename the InnoDB file (If nothing else works because it will be recreated) mv ibdata1 old_ibdata1
  • I have this configs in /etc/mysql/my.cnf-> Even if you don't specify this, MySql will use the default values.

    [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
    
  • Start MySql Server
    /etc/init.d/mysql start

  • 停止 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

回答by ChrisN

Another option you have if you mangle your my.cnf file completely is to replace it with a default config from the mysql install there . For linux:

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

You have the following options,

您有以下选择,

/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

Here is an example to install it:

这是安装它的示例:

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

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

More information on these options is available at http://dev.mysql.com/doc/mysql/en/option-files.html

有关这些选项的更多信息,请访问http://dev.mysql.com/doc/mysql/en/option-files.html

回答by Nux

Had this issue when restoring from backup. Problem was I had a bit different settings in my.ini. So in case someone gets this issue just be sure to set the same settings (copy my.ini), stop the MySQL service, then restore whole data folder and then start the MySQL service again.

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