2012-05-09 62 views

回答

9

如果您需要确定的InnoDB是否被通过查询数据库启用,您应该使用INFORMATION_SCHEMA表。

SELECT SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE = 'InnoDB'; 

其中,如果InnoDB的启用是默认的数据库,给出了

+---------+ 
| SUPPORT | 
+---------+ 
| DEFAULT | 
+---------+ 

因此如果InnoDB的是可用的,但不是默认引擎,其结果将是YES。如果不可用,结果显然是NO

请参阅http://dev.mysql.com/doc/refman/5.5/en/engines-table.htmlhttp://dev.mysql.com/doc/refman/5.5/en/information-schema.html以供参考。

当InnoDB可用时,您在评论中提到的INFORMATION_SCHEMA表也可用。

SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB%'; 

+----------------------------------------+ 
| Tables_in_INFORMATION_SCHEMA (INNODB%) | 
+----------------------------------------+ 
| INNODB_CMP_RESET      | 
| INNODB_TRX        | 
| INNODB_CMPMEM_RESET     | 
| INNODB_LOCK_WAITS      | 
| INNODB_CMPMEM       | 
| INNODB_CMP        | 
| INNODB_LOCKS       | 
+----------------------------------------+ 
7

类型:

SHOW ENGINES

在一个MySQL提示。

Innodb的怎么会像这样:

Engine: InnoDB 
Support: YES 
Comment: Supports transactions, row-level locking, and foreign keys 
+0

我想知道innodb_plugin是否安装,innodb_plugin会给出有关信息模式表中事务的信息。 http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-information-schema-transactions.html – Sandy

0

show plugins”是可用的,但我的服务器使用的是内置的InnoDB引擎,它仍然不清楚是否是内置或插件版本。

看来最好的检查方法是查看my.cnf文件。按照安装文档的插件,你必须明确忽略内置的版本,并启用该插件:

[mysqld] 
ignore-builtin-innodb 
plugin-load=innodb=ha_innodb_plugin.so 
;innodb_trx=ha_innodb_plugin.so 
;innodb_locks=ha_innodb_plugin.so 
;innodb_lock_waits=ha_innodb_plugin.so 
;innodb_cmp=ha_innodb_plugin.so 
;innodb_cmp_reset=ha_innodb_plugin.so 
;innodb_cmpmem=ha_innodb_plugin.so 
;innodb_cmpmem_reset=ha_innodb_plugin.so 

(如下所示的插件加载选项值的格式在多行显示的目的,但应该写在使用单个行没有在期权价值空间的my.cnf。在Windows上,代替.dll.so扩展的每个实例。)

http://dev.mysql.com/doc/refman/5.1/en/replacing-builtin-innodb.html

插件替换内置的InnoDB截至v5.5:http://dev.mysql.com/doc/refman/5.5/en/innodb-installation.html