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 | 31 |
Tags
- 백틱
- 깃허브 레포지토리와 로컬 코드 연결하기
- 웅진씽크빅
- github
- 부트캠프
- udemy
- 스나이퍼팩토리
- 프론트엔드개발자양성과정
- 프론트엔드배포
- 하나은행
- DIGITALHANARO
- 취준생
- 디지털하나로
- s3
- 맥북백틱입력
- `
- 네이버로그인창만들기
- 배포
- 개발자교육과정
- 디지털하나로입학식
- 맥북백틱
- 유데미
- 프로젝트캠프
- kdt
- Next.js
- 미래내일일경험
- 디지털취업
- 디지털교육
- 버전생성프로세스
Archives
- Today
- Total
Land of Joe
[SQL] ERROR 1005: (errno: 150 "Foreign key constraint is incorrectly formed") 본문
🧠 DataBase
[SQL] ERROR 1005: (errno: 150 "Foreign key constraint is incorrectly formed")
Arendt 2023. 10. 22. 16:20
'회원정보 관리'에 관한 테이블을 만들고 데이터 하나 집어 넣는 것까진 성공했고,
회원이 작성한 post와 comment에 대한 각각의 테이블을 만들려고 하는데
아무래도 외래키가 잘못되었다는 의미같아서 서칭해보았다.
CREATE TABLE account (
idx INT NOT NULL AUTO_INCREMENT,
id VARCHAR(15) NOT NULL,
name VARCHAR(10) NOT NULL,
password VARCHAR(30) NOT NULL,
email VARCHAR(100) NOT NULL,
birthday DATE NOT NULL,
phone_number VARCHAR(11) NOT NULL,
registration_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (idx, id)
);
우선 위에 account 테이블 생성에 성공한 SQL ⬆️⬆️⬆️
posts 테이블 생성에 실패한 SQL ⬇️⬇️⬇️
CREATE TABLE posts (
idx INT NOT NULL AUTO_INCREMENT,
id VARCHAR(15),
posts MEDIUMTEXT(100000),
update_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY(idx, id)
REFERENCES account (id)
);
외래키와 기본키 컬럼의 설정이 일치하지 않는 경우 발생하는 오류
해결순서 >>
1. 데이터에 타입이 같은지? -> 기본키가 INT면 외래키도 INT여야 한다!
2. 기본키와 외래키 모두 NOT NULL 체크가 되어 있는지
3. 참조하는 키(REFERENCE KEY)가 기본키 혹은 유니크키로 되어 있는지
오류확인 >>
내가 PK(기본키)가 있는 account 테이블에서는 id VARCHAR(15) NOT NULL을 정확히 적어준 반면
FK(외래키)가 있는 posts 테이블에서는 id에 NOT NULL을 적어주지 않은 사실 발견!
CREATE TABLE posts (
idx INT NOT NULL AUTO_INCREMENT,
id VARCHAR(15) NOT NULL,
posts TEXT(50000),
update_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (idx, id)
REFERENCES account (idx, id)
);
참고하는 account 테이블의 속성(column) 두 개도 정확히 지정해주고,
외래키에 NOT NULL도 체크 후 터미널에 작성하니
잘 마무리 되었다👍👍👍
이젠 새로운 에러가 뜨면
우왕~ 에러 수집 +! 이당~~~ 이라 기쁜 느낌^u^
'🧠 DataBase' 카테고리의 다른 글
[mySQL] 여러 기준으로 정렬하기, 상위 n개 레코드, 중복 제거하기, 동명 동물 수 찾기 (0) | 2024.10.11 |
---|---|
[mySQL] 재구매가 일어난 상품과 회원 리스트 구하기 (1) | 2024.10.11 |
[mySQL] 평균 일일 대여 요금 구하기 (3) | 2024.10.10 |
[SQL] ERROR 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key 오류 해결하기 (0) | 2023.10.22 |
[SQL] ERROR 1063: Incorrect column specifier for column ' ' 오류 해결하기 (0) | 2023.10.22 |