TIL 230723

댄딴똔·2023년 7월 23일
0

TIL

목록 보기
2/2

오늘은 flyway 에 ON DELETE 설정들을 추가해보자
예전에 해봤던 작업이니, 금방하겠지라는 생각과는 다르게 몇가지 시행착오를 겪었다.

우선, CREATE TABLE member (...) 이라는 코드 내에

CONSTRAINT FK_USER_CAN_ACTIVE_AS_MEMBER_IN_ZERO_OR_MORE_CLUBS
        FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL

라는 코드를 넣었더니,

Can't create table `hyminton`.`member` (errno: 150 "Foreign key constraint is incorrectly formed")

라는 에러를 볼 수 있었다.
검색을 해봤더니,
mariadb 공식홈페이지
라는 글을 볼 수 있었다. 슥, 훑어보다 보니, are not allowed 라는 것만 보였다.

mariadb 는 ON DELETE SET NULL 이 허용되지 않는구나... (물론, 반은 틀리고, 반은 맞는 말이다)

문장을 처음부터 읽는다면, 외래키 칼럼, 참조 칼럼 모두PERSISTENT_COLUMN 이 될 수 있고, 해당 칼럼에 대해서 다음과 같은 설정들이 안된다는 내용이었다. (영어..좀 잘하자)
참고로, PERSISTENT_COLUMN 은 @10.3 부터 생긴 새로운 기능이라고 한다. 나중에 한번 찾아봐야지

그렇다면, 왜 오류가 발생했을까?

...

몇 번의 시도를 통해 알게 된 실수...
Foreign Key, user_id 칼럼에 대해서 NOT NULL 으로 설정해뒀는데, ON DELETE 에서는 SET NULL 이 되어라 라고 하고 있었으니, 오류가 났던 것이다.

머리박자

profile
Beyond

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

좋은 글 감사합니다.

답글 달기