일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- deque
- 알고리즘
- 백준코딩테스트
- PS
- spring
- 재귀함수
- 완전탐색
- 구현
- DFS
- 우선순위큐
- 네트워크플로우
- 자바PS
- 시뮬레이션
- QUICKSTARTGUIDE
- 백준
- BFS
- java
- 취득후기
- 01BFS
- COSPROJAVA1급
- 게더타운시작
- 세그먼트트리
- GatherTown
- dp
- YBMCOS
- 이젠 골드구현도 어렵네..
- 다익스트라
- 엘라스틱서치
- 다이나믹프로그래밍
- COSPRO
- Today
- Total
공부공간
MariaDB error 1005 : Foreign key constraint is incorrectly formed 해결법 본문
MariaDB error 1005 : Foreign key constraint is incorrectly formed 해결법
개발자가될수있을까? 2020. 8. 16. 00:55JPA 관련 내용은 아니지만 1시간 30분여동안의 뻘짓을 기록하기 위해 + 어차피 DB랑 관련이 있으니까
프로젝트중에 기존의 두개의 테이블의 Unique한 값들을 외래키로 테이블을 생성하는 단계에서
ERROR 1005 (HY000): Can't create table `common_pjt`.`studenttable` (errno: 150 "Foreign key constraint is incorrectly formed")
이라는 문장과 studenttable의 외래키 제약조건이 잘못되었다는 메세지를 던진다.
위의 에러는 주로 3가지 상황에서 발생한다 .
1. 참조하는 외래키의 데이터 타입이 다른경우
ex ) 기존은 varchar(30)인데 만들때 int(10) 이렇게 넣는경우 -> 발견하기 쉽다.
2. 참조하는 테이블의 pk,fk가 아닌경우
ex) 유니크한 값을 지정하지 않는경우 -> 역시 발견하기 쉽다.
1,2번은 금방 발견하니 다루지 않겠다..
3. 두 테이블의 charset , collation 값이 다른경우 ->
발견하기 어렵다 (개인적으로)
참조한 블로그 글을 소개하면,
https://cirius.tistory.com/1769
http://blog.naver.com/PostView.nhn?blogId=kkforgg&logNo=220663890494
https://kyeoneee.tistory.com/17
위를 참고하여 해결하였다.
먼저 외래키로 참조하는 테이블의 인코딩과 각 컬럼의 collation값을 확인하자
show full columns from 테이블명
에서 참조하려는 두 테이블의 Collation의 값이 같아야하는데
이런것처럼 Collation이 다르다.. utf8mb4는 간단히 이모지기능을 추가한 인코딩방법이다..
무튼 이것을 해결하기위해 한쪽으로 맞추어주여야한다.
하지만 기존의 useremail이 또 다른 테이블의 외래키로 잡혀있어서 인코딩을 막 바꿀수 없는 경우가 존재하기 때문에,
Global하게 외래키 설정을 잠시 꺼두고 작업하고 다시키자,
SET FOREIGN_KEY_CHECKS = 0;
/* DO WHAT YOU NEED HERE */
SET FOREIGN_KEY_CHECKS = 1;
여러가지 방법이 있겠지만 이방법이 가장 빠르다고 생각한다.
이후에
alter table 테이블명 convert to character set utf8 collate utf8_general_ci;
의 명령어로 인코딩 방식과 collation값을 바꾸어 통일시키고 외래키 조건을 다시걸자..
테이블의 인코딩값과 외래키끼리의 Collation값이 같다면, 에러가 뜨지 않는다.
'Spring > JPA' 카테고리의 다른 글
Spring JPA ) No converter found capable of converting from type ERROR (1) | 2020.08.13 |
---|---|
Spring JPA ) No property desc/asc found for type Error (1) | 2020.08.04 |