배포 후 마이그레이션(SKIP POST DEPLOYMENT MIGRATIONS)을 무시하면 문제가 발생합니다

멀티사이트 인스턴스를 사용 중인데, 다음과 같은 오류로 인해 여러 데이터베이스의 마이그레이션이 실패했습니다.

   PG::DuplicateColumn: ERROR:  column "bookmarkable_id" of relation "bookmarks" already exists    

해당 데이터베이스의 해당 테이블에서 해당 컬럼을 삭제해야 할까요?

SKIP_POST_DEPLOYMENT_MIGRATIONS가 설정되어 있어 이전 마이그레이션이 실행되지 않았고, 이전 마이그레이션이 완료되지 않았기 때문인 것으로 보입니다.

사실이 확인되면 이 내용을 삭제하겠습니다…

@martin 혹시 최근 리팩토링과 관련이 있을 수도 있겠네요. 혹시 아이디어가 있으신가요?

거짓 경보로 죄송합니다. 이런 실수를 할 때마다 정말 짜증나네요.

문제는 SKIP_POST_DEPLOYMENT_MIGRATIONS: 1을 설정해 두고 multisite:migrate를 실행하지 않은 것이었습니다. SKIP_POST_DEPLOYMENT_MIGRATIONS=- multisite:migrate'를 실행한 후에는 부트스트랩이 가능해졌습니다.

이제 새로 시작된 반이주(세미 마이그레이션) 컨테이너를 구동한 후 마이그레이션을 실행하도록 멀티사이트 도구를 수정해야 합니다.

하지만 이상합니다. Recovering from failed/partially applied upgrade 도 동일한 문제를 겪고 있는 것으로 보이며, 표준 설치 환경인 것으로 보입니다.

이 게시물에 답글을 달았어야 했는데, 다른 문제의 동일한 증상인 것 같아서 그러지 않았어요. :slight_smile: 솔직히 제가 아는 지식이 부족해서 어느 쪽이든 확신할 수는 없네요…

https://github.com/discourse/discourse/commit/8040b95e8c4abeab1ab9fe50826f92c52995a814와 관련이 있는 것으로 보입니다.

이 커밋은 2f1ddadff7dd47f824070c8a3f633f00a27aacde의 재처리(redo)입니다. 내부 CI 체크가 실패(blow up)했기 때문에 해당 커밋을 되돌렸었습니다. 조사해 보니, 북마크 열(column)을 추가하기 위한 이전 마이그레이션이 여전히 존재하고 있었으며, 해당 열들은 post migrate 단계에서 삭제되도록 되어 있었습니다. 이로 인해 post migrate가 실행되기 전에 열을 추가하는 두 개의 마이그레이션이 충돌하고 있었습니다.

와. 그걸 설명해 주는 것 같네.

이 문제에 대한 업데이트가 있나요?

제 환경에서도 동일한 문제가 발생합니다.

이 git을 내 discourse에 어떻게 복사하나요?