2014-12-05 3 views
0

저는 현재 concrete5.7 설정을 localhost에서 라이브 서버로 옮깁니다. 나는 키가 너무 깁니다 만 변경할 수있는 자유가 있다는 것을 알고 있어요지정한 키가 너무 깁니다. 최대 키 길이는 1000 바이트입니다.

Error 
SQL query: 

-- -------------------------------------------------------- 
-- 
-- Tabelstructuur voor tabel `config` 
-- 
CREATE TABLE IF NOT EXISTS `config` (

`configNamespace` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
`configGroup` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL , 
`configItem` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL , 
`configValue` LONGTEXT COLLATE utf8_unicode_ci, 
PRIMARY KEY ( `configNamespace` , `configGroup` , `configItem`) , 
KEY `configGroup` ( `configGroup`) 
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci; 

MySQL said: 

#1071 - Specified key was too long; max key length is 1000 bytes 

: 내가 한 우선 그러나이 나에게 오류를주고, SQL 데이터베이스를 내 보낸 서버에 가져올입니까? latin1 데이터베이스 정렬 변경 시도했지만 작동하지 않았다.

어떤 설정을 변경할 수 있습니까?

은 기본 키의 가난한 선택 피드백

답변

0

주셔서 감사합니다 - 기본 키의 자연적인 선택의 여지가없는 경우 을 행이 고유하게 만들기 위해 엔트로피의 1000 바이트가 필요하지 않습니다, 당신이를 생성 할 수 있습니다 행의 대신 키.

configId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 

이 함께

PRIMARY KEY ( `configNamespace` , `configGroup` , `configItem`) , 

교체하면 위의를 사용하는 응용 프로그램에 대한 주요 변경해서는 안됩니다.

0

나는 다음과 같은 구조를 추천 할 것입니다 :

CREATE TABLE IF NOT EXISTS `config` (
    configId int not null auto_increment primary key, 
    configNamespace VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
    configGroup VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL , 
    configItem VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL , 
    configValue LONGTEXT COLLATE utf8_unicode_ci, 
    UNIQUE (configNamespace, configGroup, configItem) , 
    KEY `configGroup` ( `configGroup`) 
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci; 

이 테이블의 자동 증가 기본 키를 생성합니다. 또한 이전에 기본 키에 사용 된 세 개의 열에 대한 고유 제한 조건을 유지합니다.

관련 문제