【问题标题】:Unknown table 'table_name' in information_schemainformation_schema 中的未知表“table_name”
【发布时间】:2017-03-08 04:41:18
【问题描述】:

我想从每个具有table_schema='foo'(数据库名称)的表中show index

mysql> show index from table_name from information_schema.tables where table_schema='foo';
ERROR 1109 (42S02): Unknown table 'table_name' in information_schema

从错误中,我看到查询将'table_name' 视为information_schema 中的一个表。如何重写查询以将'table_name' 视为information_schema.tables 中的列?

【问题讨论】:

  • 我相信这就是你要找的东西:stackoverflow.com/questions/5213339/…
  • 为什么你会认为from table_name from 是有效的语法?它甚至没有接近任何可以接受的东西。

标签: mysql information-schema database-indexes


【解决方案1】:

您正在处理这个错误,并且您正在编造不存在的语法。

我建议您获取索引的方式是读取INFORMATION_SCHEMA.STATISTICS 表,而不是TABLES 表。

以下查询与SHOW INDEXES 具有相同的列:

SELECT table_name AS `Table`, Non_unique, index_name AS Key_name,
  Seq_in_index, Column_name, Collation, Cardinality, Sub_part,
  Packed, Nullable, Index_type, Comment, Index_comment 
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE table_schema = 'foo';

您可能认为应该有一个名为“INDEXES”的 I_S 表,但实际上索引对象的系统表名为“STATISTICS”。去图吧。

【讨论】:

  • 这确实给出了我想要的结果。但是有没有办法以编程方式获取所有表格而不是全部输入?另外,我意识到您的查询是更好的方法,但是我最初尝试做的有语法吗?基本上对另一个查询返回的列表的每个项目执行查询。
  • 不,SHOW INDEXES 没有语法可以将另一个查询的结果作为表列表。您必须运行查询以获取表列表,然后使用 SHOW INDEXES ... 语句构建动态 SQL 查询。
猜你喜欢
  • 2019-02-24
  • 2013-12-31
  • 2015-06-12
  • 2013-07-03
  • 2018-07-26
  • 2018-07-23
  • 1970-01-01
  • 2011-01-17
  • 2014-03-02
相关资源
最近更新 更多