1
이전 MySQL/Spring/Eclipselink 프로젝트를 MariaDB로 포팅하기 시작했습니다. 그러나 나는 그것을 올바른/관리하는 방법을 모른다,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)
나는이가 문자 인코딩 관련이 있음을 이해 : 나는 다음과 같이 설명 될 수있는 테이블 작성에 문제가 발생하고있다?
전체 255 멀티 바이트 문자에 대한 고유 제한 조건이 필요하고 InnoDB 스토리지 엔진을 사용하는 경우 ** innodb_large_prefix **를 사용 가능으로 설정하는 것이 좋습니다. 참조 : https://mariadb.com/kb/en/library/xtradbinnodb-server-system-variables/#innodb_large_prefix – spencer7593
문제가되는 고유 한 제약 조건이 아닌 것 같습니다. - 두 개의 varchar (255) (키가 아님) 오류가 발생합니까? – skyman
문제는 유니 코드 (최대 4 바이트)를 처리하기 위해 실제 크기가 커야하는 INDEX와 관련되어 있으므로 한도를 초과합니다. 그래서'PRIMARY KEY'는'UNIQUE INDEX'를 만들려고 시도 할 것이고 우주 문제 때문에 실패 할 것입니다. :-(여러 번 물린 경우 –