【发布时间】:2018-08-28 02:54:43
【问题描述】:
information_schema 中似乎缺少数据。 show create table 与 information_schema 不同。
当我跑步时:SHOW CREATE TABLE devicoserver.email_templates;
我有 4 把钥匙:
CREATE TABLE `email_templates` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`subject` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`language_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `email_templates_language_id_foreign` (`language_id`),
KEY `email_templates_email_type_unique` (`email_type`),
KEY `email_templates_subject_unique` (`subject`),
CONSTRAINT `email_templates_language_id_foreign` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
但是,当我查询信息架构时,它表明只有 2 个键
select
CONSTRAINT_NAME,COLUMN_NAME FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'email_templates' and CONSTRAINT_SCHEMA = 'devicoserver';
PRIMARY, idemail_templates_language_id_foreign,language_id
这有意义吗,information_schema 可以和实际表不同吗? 我知道它是真实的,因为我试图创建一个密钥,但我得到了它已经存在的异常。
谢谢
【问题讨论】:
-
尝试查询
TABLE_CONSTRAINTS。我相信KEY_COLUMN_USAGE显示了解析查询时使用的索引。 “KEY_COLUMN_USAGE 表描述了哪些键列有约束。”它在文档中说不知道这是否是错误的.. -
@RaymondNijland 同样的事情......这不是很奇怪吗?谢谢
-
information_schema 永远不会与其他
SHOW命令不同步,因为其中许多SHOW命令在内部作为针对 information_schema 的查询运行。
标签: mysql indexing information-schema