2016-07-11 2 views
0

내 Mysql 5.7.13 데이터베이스 테이블의 varchar(500) 열에 고유 인덱스를 유지해야합니다.mysql 5.7.13 innodb unique column varchar (500)

charset이 UTF8로 설정되어 있으므로 innodb 엔진을 사용하고 있기 때문에 문자 한도는 255입니다. 크기가 최대 3072 바이트까지 확장되어야하는 옵션 innodb_large_prefix이 있다는 것도 알고 있습니다. 이 기능을 지원하도록 db를 구성하려고했지만 작동하지 않습니다. 두 개의 똑같은 500 자 긴 행을 다른 문자와 함께 삽입하려고 시도했지만 고유 한 제약 조건 오류가 발생합니다. 따라서 처음 255 자에서 고유성 검사가 수행됩니다.

내가 누락 된 항목이 있습니까? 이 옵션의 목적을 오해 했습니까?

P.S innodb_file_format = Barracuda을 mysql 문서에서 가리 키도록 설정했습니다.

도움 주셔서 감사합니다. Simone

+0

테이블의 행 형식은 무엇입니까? 그것은 문서에서 동적 또는 압축 된 행 형식에만 해당되므로 그렇게 할 수도 있습니다. – rlanvin

+0

@rlanvin 먼저 행 형식을 '동적'으로 변경하고 '압축'을 변경했지만 결과는 동일합니다. 고유 제한 조건은 처음 255 자에서 계산됩니다. –

답변

0

나는 내 문제를 해결했다.

innodb 엔진이 잘 구성되어 있다는 것이 밝혀졌습니다. innodb_large_prefix 옵션을 활성화하고 고유 인덱스를 varchar(500)에 설정하기 전에 테이블을 만들었습니다.

varchar(500) 필드에서 인덱스를 삭제하고 다시 만든 후 고유 제한이 예상대로 작동하기 시작합니다.