오늘은 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")
라는 에러를 볼 수 있었다.
검색을 해봤더니,
라는 글을 볼 수 있었다. 슥, 훑어보다 보니, are not allowed
라는 것만 보였다.
mariadb 는 ON DELETE SET NULL 이 허용되지 않는구나... (물론, 반은 틀리고, 반은 맞는 말이다)
문장을 처음부터 읽는다면, 외래키 칼럼, 참조 칼럼 모두PERSISTENT_COLUMN
이 될 수 있고, 해당 칼럼에 대해서 다음과 같은 설정들이 안된다는 내용이었다. (영어..좀 잘하자)
참고로, PERSISTENT_COLUMN
은 @10.3 부터 생긴 새로운 기능이라고 한다. 나중에 한번 찾아봐야지
그렇다면, 왜 오류가 발생했을까?
몇 번의 시도를 통해 알게 된 실수...
Foreign Key, user_id
칼럼에 대해서 NOT NULL
으로 설정해뒀는데, ON DELETE
에서는 SET NULL
이 되어라 라고 하고 있었으니, 오류가 났던 것이다.
좋은 글 감사합니다.