Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- DI
- 운영체제
- 프로젝트설정
- 주니어개발자
- resilience4j
- 좋은코드란
- IOC
- Java
- Npoem
- 상속모델
- circular dependency
- 마이크로서비스패턴
- 토이프로젝트
- SpringBoot
- django
- Not Null constraint failed
- 2차원배열 정렬
- 객체비교
- 컨트리뷰팅
- API문서화
- Spring
- bulk_create
- 일급함수
- circuitbreaker
- GraphQL
- cannot import name
- bean-validator
- 함수형프로그래밍
- 쿼리셋합치기
- n poem
Archives
- Today
- Total
코딩 하는 가든
[Mysql] Error executing DDL (feat: max key length is 767 bytes, JPA) 본문
[오늘의 에러]
Npoem(개인 프로젝트) 서버의 EC2에 hibernate auto ddl로 테이블을 생성하다 아래와 같은 에러가 발생하였다.
GenerationTarget encountered exception accepting command : Error executing DDL "alter table ~~" via JDBC Statement
Caused by: java.sql.SQLSyntaxErrorException: (conn=152) Specified key was too long; max key length is 767 bytes
Error excuting DDL 에러가 나는 경우가 몇 가지 있을 것이다. (alter table drop foreign key, alter table add foreign key 등등...)
이 에러가 난 이유를 타고 타고 들어가다 보면 만날 수 있는 원인 중 하나가 max key length is 767 bytes 에러이다.
이 에러가 나는 이유는 간단히 말해 mysql의 table을 InnoDB로 생성할 경우 InnoDB Table에 대한 인덱스 길이 제약이 걸리기 때문이다.
해결 방법은 두 가지가 있을 수 있는데
1. InnoDB 설정의 인덱스 길이 제약을 늘린다.
2. 테이블 필드의 길이 제한을 건다.
본인이 이 에러를 겪은 이유는 JPA @Column 어노테이션에 length 인자를 넣지 않아서였다. 길이 제약이 없어 최대 길이인 767 바이트를 넘어가 버린 것 같다.
@Column(length = 100) 과 같이 length를 지정해주니 제대로 실행이 되었다.