본문 바로가기
MySQL

Specified key was too long (부제: mysql 인덱스 생성 힘드네)

by 타마마임팩트_쫀 2017. 6. 9.

mysql에 테이블 생성하는데 에러가 발생 했다.

16:36:12 mysql_13306.sock > create table push_test

    -> (col1 bigint,

    -> col2 varchar(256),

    -> PRIMARY KEY (col1, col2));

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes


PK제약인가? 

다시 생성

16:36:13 mysql_13306.sock > create table push_test

    -> (col1 bigint,

    -> col2 varchar(256),

    -> KEY push_test_idx01 (col1, col2));

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes


여전히 안되는군.

16:45:32 mysql_13306.sock > show global variables like '%char%';

+--------------------------+-------------------------------------------------------+

| Variable_name            | Value                                                 |

+--------------------------+-------------------------------------------------------+

| character_set_client     | utf8mb4                                               |

| character_set_connection | utf8mb4                                               |

| character_set_database   | utf8mb4                                               |

| character_set_filesystem | binary                                                |

| character_set_results    | utf8mb4                                               |

| character_set_server     | utf8mb4                                               |

| character_set_system     | utf8                                                  |

| character_sets_dir       | /data1/DBSpace_mysql/MySQL_5628/13306/share/charsets/ |

+--------------------------+-------------------------------------------------------+

8 rows in set (0.00 sec)


인덱스 만들때 key 사이즈가 767바이트를 넘으면 안되는데,

utf8mb4는 1글자당 4바이트.


그럼 191글자 까지 가능.

16:51:33 mysql_13306.sock > create table push_test

    -> (col1 bigint,

    -> col2 varchar(256),

    ->  KEY push_test_idx01 (col1, col2(192)));

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes


16:51:45 mysql_13306.sock > create table push_test

    -> (col1 bigint,

    -> col2 varchar(256),

    ->  KEY push_test_idx01 (col1, col2(191)));

Query OK, 0 rows affected (0.05 sec)


인덱스 한번 만들기 힘드네.


mysql을 사용하면 안되는 이유...



'MySQL' 카테고리의 다른 글

MySQL Hash Join Optimization  (0) 2019.10.02
MySQL 시퀀스(AUTO_INCREMENT) 조회 및 초기화  (0) 2018.09.18
MySQL 설치 (5.6 or 5.7)  (0) 2017.03.09
MySQL load data  (0) 2016.10.27
MySQL 사용자 계정 추가, 변경, 자원 제한  (0) 2016.10.20