codestates / codestates/HoloSulo
[Error-Handling] 박강용 2022-02-18
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
### 어떤 에러인가요?
Songs 이라는 테이블에 playlistId 라는 참조 칼럼이 있었다. 나중에 Seeder를 통해서 더미데이터를 삽입하려 했을때 에러가 났다.
Seeder를 하기전 모든 칼럼은 데이터가 비어진 상태이었다. 그러나 참조 칼럼이 비어 있다면 이것은 **참조 무결성** 을 위해 한 상황이다.
참조 무결성 이란 A테이블에 a 칼럼이 존재하고 B 테이블에 b 칼럼이 서로를 참조하는 상황이라면 두 칼럼의 값은 항상
일관되어야 한다는 개념이다.
예를 들어 b칼럼의 값이 변경 되었다면 a 칼럼 또한 동일하게 변경 되어야 한다. 만약 두 값이 다르다면 참조 무결성을 위배한것이다.
아래 예시 그림은 참조 무결성을 위배한 예시이다.
참조 https://en.wikipedia.org/wiki/Referential_integrity
### 에러 메시지
```Javascript
$ ERROR: Cannot add or update a child row: a foreign key constraint fails (`holosulo`.`songs`, CONSTRAINT `Songs_playlistId_Playlists_fk` FOREIGN KEY (`playlistId`) REFERENCES `playlists` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
```
### 에러 핸들링 방법
* Mysql 접속해서 INSERT 쿼리를 이용해 직접적으로 데이터 삽입 하면 임시적인 해결 가능
* migrate:undo:all 를 통해 모든 칼럼을 리셋한 후 다시 migrate 를 해서 테이블을 만들고 Seeder 를 하면 데이터 삽입 가능해짐
### 에러 핸들링을 위해 참고한 레퍼런스 링크
* [참고 레퍼런스](https://live-everyday.tistory.com/188)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.