【问题标题】:MySQL - Find table from constraint nameMySQL - 从约束名称中查找表
【发布时间】:2021-12-29 16:03:53
【问题描述】:

我弹出一个错误,引发如下错误:

IntegrityError: (999, "Duplicate entry 'XXXXX' for key 'constraint_name_here_uniq'")

所以我有了约束名称,有没有一种简单的方法可以找出在 mysql 命令行中引用了哪些表、列?这是一个非常大的数据库,我尝试使用SHOW CREATE TABLE 在几张表中查找,但没有成功,我也尝试过DESC <constraint name>,但也没有用。

【问题讨论】:

标签: mysql database command-line unique-constraint


【解决方案1】:

这应该可行:

 select *  
 from  information_schema.KEY_COLUMN_USAGE 
 where CONSTRAINT_NAME ='constraint_name_here_uniq';

例子:

mysql> use information_schema;
Database changed
mysql>  select *  from  KEY_COLUMN_USAGE where CONSTRAINT_NAME ='user_has_notification_types_user_idx' \G
*************************** 1. row ***************************
           CONSTRAINT_CATALOG: def
            CONSTRAINT_SCHEMA: kanboard
              CONSTRAINT_NAME: user_has_notification_types_user_idx
                TABLE_CATALOG: def
                 TABLE_SCHEMA: kanboard
                   TABLE_NAME: user_has_notification_types
                  COLUMN_NAME: user_id
             ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: NULL
      REFERENCED_TABLE_SCHEMA: NULL
        REFERENCED_TABLE_NAME: NULL
       REFERENCED_COLUMN_NAME: NULL
*************************** 2. row ***************************
           CONSTRAINT_CATALOG: def
            CONSTRAINT_SCHEMA: kanboard
              CONSTRAINT_NAME: user_has_notification_types_user_idx
                TABLE_CATALOG: def
                 TABLE_SCHEMA: kanboard
                   TABLE_NAME: user_has_notification_types
                  COLUMN_NAME: notification_type
             ORDINAL_POSITION: 2
POSITION_IN_UNIQUE_CONSTRAINT: NULL
      REFERENCED_TABLE_SCHEMA: NULL
        REFERENCED_TABLE_NAME: NULL
       REFERENCED_COLUMN_NAME: NULL
2 rows in set (1.70 sec)

以及使用索引的表:

mysql> use kanboard;
Database changed
mysql> show create table user_has_notification_types;
+-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                       | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
+-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user_has_notification_types | CREATE TABLE `user_has_notification_types` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `notification_type` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_has_notification_types_user_idx` (`user_id`,`notification_type`),
  CONSTRAINT `user_has_notification_types_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
+-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多