【问题标题】:How to find MySQL temporary table storage engine如何找到 MySQL 临时表存储引擎
【发布时间】:2013-04-24 03:31:49
【问题描述】:

您好,我正在使用临时表,我想知道临时表存储引擎(InnoDB、MyISAM ....)

我正在使用以下代码查找,但它没有显示存储引擎。

$engine="SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND `TABLE_NAME`='temporary_table'";
$export = mysql_query($engine, $connection) or die ("Sql error : ".mysql_error());
while ($row = mysql_fetch_array($export, MYSQL_BOTH)) {
    printf ("ENGINE: %s ---", $row[0]);
}

但是当我尝试在我的数据库中查找物理表的存储引擎时,相同的代码是否有效?

非常感谢任何帮助。!!谢谢。

【问题讨论】:

  • 我收到错误:E_TOO_MANY_CAPITAL_LETTERS。
  • 但我的物理表“ENGINE: InnoDB”得到以下答案

标签: php mysql database innodb myisam


【解决方案1】:

Unfortunately:

目前,[INFORMATION_SCHEMA.]TABLES 表未列出 TEMPORARY 表。

我建议解析SHOW CREATE TABLE temporary_table;的结果

仅提取此返回值的 ENGINE:

$rset = mysql_query('SHOW CREATE TABLE temporary_table;')
$row = mysql_fetch_array($rset, MYSQL_BOTH);
preg_match('/ENGINE\=(?P<engine>\w+)/', $row[1], $matches);
echo $matches['engine'];

【讨论】:

  • 嗨牦牛!感谢您的回答.. 但我只想知道存储引擎。我制定了您的查询,它提供了表的所有详细信息。但我只想要存储引擎。有没有其他办法?
  • 好吧,稍微修改一下正则表达式,您应该能够提取所需的信息。如果时间允许,我会再举个例子。
  • 您好我正在使用以下查询来创建临时表。: CREATE TEMPORARY TABLE csv_import( id INT, entitiy_id INT, attribute_id INT, value TEXT )ENGINE MyISAM 我想确保该表是在 MyISAM 中创建。
  • @TomPHP - 如果你做这样的声明,那么引擎将是 MyISAM。你的问题有什么意义?如果您的create table 指定,为什么需要确保该表是 MyISAM?
  • 实际上,当用户在应用程序上工作时,他们需要知道数据来自哪个临时存储引擎......因为他们会在工作时根据需要更改存储引擎。!因此,在创建临时数据库后,他们将单击一个按钮以了解存储引擎。所以在按钮的操作中,我正在检查临时表引擎。清楚吗..?这是要求..我正在尝试解决方案。
【解决方案2】:

您将需要搜索临时表存储 information_schema.temporary_tables 或全局临时表存储 information_schema.global_temporary_tables

试试

`SELECT ENGINE FROM information_schema.temporary_tables WHERE TABLE_SCHEMA='test' AND `TABLE_NAME`='temporary_table'`

【讨论】:

  • 嗨,Kami,我收到以下错误:Sql 错误:information_schema 中的未知表“temporary_tables”
  • 这可能适用于另一个数据库引擎,但恐怕我在 MySQL 中找不到对 information_schema.temporary_tables 表的引用。您指的是 MySQL 的 Percona 风格吗?
  • 您好我正在使用以下查询来创建临时表。: CREATE TEMPORARY TABLE csv_import( id INT, entitiy_id INT, attribute_id INT, value TEXT )ENGINE MyISAM 我想确保该表是在 MyISAM 中创建。
  • 他们帮助了我很多,也让我思考......以下是我从 Yak 编辑的代码! $rset = mysql_query('SHOW CREATE TABLEtemporary_table_name'); $row = mysql_fetch_array($rset, MYSQL_BOTH); preg_match('/ENGINE\=(?P\w+)/', $row[1], $matches); echo "匹配:".$matches['engine'];输出:匹配:MyISAM 谢谢大家!希望这对其他人有帮助!
猜你喜欢
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2011-04-25
  • 2010-12-14
  • 1970-01-01
相关资源
最近更新 更多