>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 오류 #1071: '지정된 키가 너무 깁니다'가 발생하는 이유는 무엇입니까?

MySQL에서 오류 #1071: '지정된 키가 너무 깁니다'가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 14:59:10538검색

Why Does MySQL Throw Error #1071:

MySQL 오류 #1071: 키 길이 제약 조건 조사

두 개의 VARCHAR에 고유 키 제약 조건을 추가하여 MySQL 테이블을 수정하려고 할 때 열에서 다음과 같은 다소 복잡한 오류 메시지가 나타납니다. "#1071 - 지정된 키가 너무 깁니다. 최대 키 길이는 다음과 같습니다. 767바이트". 두 열의 크기가 모두 767바이트 제한 내에 있음에도 불구하고 이 오류를 이해하려면 MySQL의 키 길이 제약 조건에 대해 자세히 알아볼 필요가 있습니다.

키 길이 제한 재검토

MySQL 버전 5.6 이하에서 키의 최대 길이는 실제로 InnoDB 테이블의 경우 767바이트이고 테이블의 경우 1,000바이트입니다. MyISAM 테이블. 그러나 MySQL 버전 5.7 이상에서는 이 제한이 훨씬 더 큰 3072바이트로 확장되었습니다.

VARCHAR 저장소 디코딩

VARCHAR 데이터 유형은 최대값을 제안하지만 각 열에 대해 20바이트 및 500바이트를 저장하는 경우 이 계산에서는 문자 인코딩을 고려하지 않습니다. VARCHAR 필드가 utf8mb4 형식으로 인코딩된 경우 최대 인덱스 접두사 길이는 사실상 1/4로 줄어들어 결과적으로 191바이트(767/4)만 됩니다.

해결 방법 찾기

이 문제를 해결하려면 다음 중 하나를 구현하는 것이 좋습니다. 전략:

  • 열 크기 줄이기: 인덱스 접두사 길이 제약 조건을 충족하도록 VARCHAR 필드의 최대 길이를 제한합니다.
  • 열 하위 집합: 인덱싱에 열의 일부만 활용하여 키 길이를 줄입니다. 예: ALTER TABLE mytable ADD UNIQUE (column1(15), column2(200) );
  • 데이터 모델 검토: 테이블 디자인을 재평가하고 다음과 같은 대체 접근 방식이 있는지 고려하십시오. 이러한 MySQL 제한 사항이 발생하는 것을 방지할 수 있습니다.

위 내용은 MySQL에서 오류 #1071: '지정된 키가 너무 깁니다'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.