Discourse 복원 실패: 관계가 이미 존재합니다 오류

여러 가지 불운한 일이 겹쳐서, 최신 전체 백업에서 복원하는 것이 불가능한 것 같습니다.

전체적인 이야기는 나중에 자세히 쓰겠지만, 현재 제가 겪고 있는 문제는 백업 복원 중 아래 에러가 발생한다는 것입니다:

Migrating the database…
EXCEPTION: rake db:migrate
Failed to migrate database.
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled: (StandardError)

PG::DuplicateTable: ERROR:  relation “gamification_leaderboard_scores” already exists

이것은 제 플러그인 관련 문제인 것 같지만, 복원이 정상적으로 작동하도록 해결책을 찾기 위해 로그를 해석하는 데 도움이 필요합니다.

일단, 이런 일이 발생했습니다.

오늘早些 저는 Discourse를 2026.5.0-latest b0873d3ecd 버전으로 업데이트했습니다. 그런데 이 업데이트에 포함된 깨진 변경 사항(breaking change)으로 인해 제 주요 테마가 작동하지 않게 되었습니다. 업데이트 전에 호환성을 확인했어야 했는데 아쉬울 따름입니다.

당황하여, 마지막으로 받은 백업에서 복원하면 테마와 호환되는 Discourse 버전으로 되돌릴 수 있을 것 같았습니다. 복원하기 전에 혹시 문제가 생겼을 때를 대비해 가능한 한 많은 복원 지점을 확보하고 싶다는 생각으로 전체 백업을 하나 더 생성해 두었습니다.

하지만 첫 번째 복원 과정에서 문제가 발생했고, Discourse가 다시 시작되었을 때 최근 15일간의 콘텐츠가 사라져 있었습니다. 더 자세히 살펴보니, Meta의 해당 토픽에서 백업 파일 이름을 2026-04-28-033449-v20260420014648.sql.gz에서 2026-04-28-033449-v20260407093145.sql.gz으로 변경하라는 제안이 있었습니다. 왜 이것이 효과가 있었는지는 정확히 모르지만, 덕분에 최소한 어제의 백업까지는 복원할 수 있었습니다.

아직 오늘 아침에 생성한 마지막 전체 백업에서 복원해야 하는데, 바로 이 백업이 맨 위에 표시된 에러를 유발하고 있습니다.

다른 몇 가지 플러그인에서도 이러한 문제가 발생한 적이 있습니다. 어떻게 된 일인지 정확히 파악은 못했지만, 테이블은 생성되었는데 마이그레이션 시스템에서는 해당 마이그레이션이 실행된 것으로 인식하지 못하는 상태인 것 같습니다.

정확히 설명할 만큼 잘 알고 있지는 않습니다. 대략적인 내용으로는, 마이그레이션이 실행되기 전에 복원(restore)을 중단해야 합니다(복명 명령어에 이를 위한 옵션이 있습니다). 그리고 테이블을 삭제해야 할 것 같습니다. 이 내용이 이해가 되거나 거의 이해가 된다면, https://ask.discourse.com/ 의 도움을 받아 해결할 수 있을 것입니다.

이 방법으로 해결이 되지 않고, 급한 상황이면서 예산도 있다면 Marketplace 채널에 문의하거나 저에게 이메일을 보내실 수 있습니다. 급하지 않거나 예산이 없다면, 다른 누군가가 이해하기 쉬운 방식으로 해결 방법을 설명해 줄 수도 있습니다.