MariaDB 문자 인코딩
저는 오래된 MySQL/Spring/Eclipselink 프로젝트를 MariaDB에 이식하기 시작했습니다.다음과 같이 나타낼 수 있는 테이블 작성에 문제가 발생했습니다.
MariaDB [spasm]> CREATE TABLE Configuration (ID BIGINT NOT NULL, Attribute VARCHAR(190) NOT NULL UNIQUE, Value VARCHAR(255) NOT NULL, PRIMARY KEY (ID));
Query OK, 0 rows affected (0.07 sec)
MariaDB [spasm]> drop table Configuration;
Query OK, 0 rows affected (0.06 sec)
MariaDB [spasm]> CREATE TABLE Configuration (ID BIGINT NOT NULL, Attribute VARCHAR(255) NOT NULL UNIQUE, Value VARCHAR(255) NOT NULL, PRIMARY KEY (ID));
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
MariaDB [spasm]>
MariaDB [spasm]> show 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
문자 인코딩과 관련된 것은 알고 있습니다만, 어떻게 관리/수정해야 할지 모르겠습니다.
새로운 디폴트CHARACTER SET
이utf8mb4
에 대해 불평하고 있습니다.UNIQUE
인덱스:
Attribute VARCHAR(255) NOT NULL UNIQUE
CARTER SET utf8mb4를 사용하려고 하기 때문에 한계에 도달한 경우.다음으로 다음 중 하나(각각 단점이 있음)를 실행하여 오류를 방지합니다.
⚈ Upgrade to 5.7.7 (MariaDB 10.2.2?) for 3072 byte limit -- your cloud may not provide this;
⚈ Change 255 to 191 on the VARCHAR -- you lose any values longer than 191 characters (unlikely?);
⚈ ALTER .. CONVERT TO utf8 -- you lose Emoji and some of Chinese;
⚈ Use a "prefix" index -- you lose some of the performance benefits.
또는... 5.6/5.5/10.1을 유지하되 4단계를 수행하여 제한을 3072바이트로 높입니다.
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;
SET GLOBAL innodb_large_prefix=1;
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=DYNAMIC; -- (or COMPRESSED)
언급URL : https://stackoverflow.com/questions/46614894/mariadb-character-encoding
'programing' 카테고리의 다른 글
개체를 포함하는 어레이를 루프하여 해당 속성에 액세스하는 방법 (0) | 2023.01.30 |
---|---|
Java에서 목록을 "인스턴스화"하고 있습니까? (0) | 2023.01.20 |
쿼리 조건이 JPA 및 스프링을 충족하는 경우 행 삽입 (0) | 2023.01.20 |
Pthread 라이브러리에서 스레드 제거 (0) | 2023.01.20 |
WordPress 설치의 wp_options 테이블에서 과도 상태를 제거할 수 있습니까? (0) | 2023.01.20 |