programing

mysql ERROR 1062 (23000) 해결 방법:키 'UK_ability_shortname'에 대한 항목 ''이(가) 중복됩니다.

projobs 2022. 12. 20. 22:49
반응형

mysql ERROR 1062 (23000) 해결 방법:키 'UK_ability_shortname'에 대한 항목 ''이(가) 중복됩니다.

열에 고유 키를 추가하려고 하는데 자체 설명 오류가 발생합니다.

MariaDB [dnd]> ALTER TABLE ability
    ->   ADD UNIQUE INDEX UK_ability_shortname (shortname);
ERROR 1062 (23000): Duplicate entry '' for key 'UK_ability_shortname'

근데 문제는 중복된 게 하나도 안 보인다는 거예요.

MariaDB [INFORMATION_SCHEMA]> select * from INNODB_SYS_INDEXES WHERE NAME LIKE 'UK_%';
+----------+---------------------------------+----------+------+----------+---------+-------+
| INDEX_ID | NAME                            | TABLE_ID | TYPE | N_FIELDS | PAGE_NO | SPACE |
+----------+---------------------------------+----------+------+----------+---------+-------+
|     1733 | UK_food_food                    |      563 |    2 |        1 |       4 |   558 |
|     1737 | UK_type_type                    |      565 |    2 |        1 |       4 |   560 |
|     2077 | UK_invite_status_status         |      763 |    2 |        1 |       4 |   752 |
|     2586 | UK_tool_class_name              |     1093 |    2 |        1 |       4 |  1082 |
|     2591 | UK_food_drink_lodging           |     1097 |    2 |        2 |       4 |  1086 |
|     2595 | UK_lifestyle_expenses_lifestyle |     1100 |    2 |        1 |       4 |  1089 |
|     2691 | UK_weapon_name                  |     1173 |    2 |        1 |       4 |  1162 |
|     2692 | UK_weapon_property_name         |     1174 |    2 |        1 |       4 |  1163 |
|     2696 | UK_ability_name                 |     1183 |    2 |        1 |       4 |  1172 |
+----------+---------------------------------+----------+------+----------+---------+-------+
9 rows in set (0.00 sec)

DB가 이름에 경합이 있거나 인덱스 이름 제한을 초과했다고 생각하는 이유를 알기 위해 제가 확인할 수 있는 다른 방법이 있나요?

변경하려는 테이블 정의.

CREATE TABLE `ability` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `shortname` char(3) NOT NULL,
  `description` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK_ability_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='Page 175'

사용방법: 서버 버전: 10.0.15-MariaDB MariaDB Server

다른 정보가 있으면 알려주세요.

오류 메시지는 열 값이 같은 행이 두 개 이상 있음을 나타냅니다.shortname('': 빈 문자열).따라서 MariaDB는 해당 열에 고유한 인덱스를 생성할 수 없습니다.다음 쿼리를 사용하여 열에서 중복된 값을 검색합니다.

SELECT
    shortname,
    GROUP_CONCAT(id)
FROM
    ability
GROUP BY
    shortname
HAVING
    COUNT(0) > 1

언급URL : https://stackoverflow.com/questions/27208582/how-to-solve-mysql-error-1062-23000-duplicate-entry-for-key-uk-ability-sh

반응형