如何从 PHP 程序中检测 MySQL 数据库表是否正在使用 InnoDB 存储引擎?
原因 - PHP 程序需要利用数据库事务。InnoDB 支持事务。MyISAM(MySQL 默认存储引擎)没有。如果不支持事务,则程序需要失败。
尝试这个:
SHOW TABLE STATUS WHERE Name = 'xxx'
这将为您(除其他外)提供一个 Engine 列,这就是您想要的。
或者如果你想要它在数据库级别
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'dbname'
我会比较喜欢:
SHOW CREATE TABLE tablename\G
超过:
SHOW TABLE STATUS WHERE Name = 'xxx'
因为您可以轻松地指定当前数据库之外的表,即:
SHOW CREATE TABLE database.table\G
\G
格式输出很好,但它是可选的。