복원이 실패합니다: "hotlinked_media_status"이(가) 이미 존재합니다

Upgrade fails on duplicate key error (“index post hotlinked media on post id and url md5”)에서 이어지는 토론입니다:

지금 프로덕션 사이트 하나에서 스테이징 사이트로 복원을 시도하고 있는데 다음과 같은 오류가 발생합니다:

ERROR:  type "hotlinked_media_status" already exists
EXCEPTION: psql failed: ERROR:  type "hotlinked_media_status" already exists

@david 이전에 이 문제를 수정할 때(이전에는 마이그레이션에서 실패했고, 지금은 복원 과정입니다) 놓친 케이스가 있는지 확인해 주실 수 있을까요?

사이트를 어떻게 복구하고 있나요? UI를 통해서인가요? discourse CLI인가요? 아니면 직접 psql를 사용하고 있나요?

명령줄에서 가장 최근 백업 복원 (오늘 이 sed 트릭을 알아냈는데, 복사/붙여넣기를 해도 결과는 동일했습니다).

$(discourse restore |sed -n '3p')

그리고 S3에 있는 백업은 약간 오래된 버전에서 복원되었습니다:

Discourse 3.4.0.beta1-dev - https://github.com/discourse/discourse version a3d61ba1c43931eb688f9b2b85c207b5bab02b8c

다음으로:

Discourse 3.4.0.beta2-dev - https://github.com/discourse/discourse version f405c021ebd36d5f11499159bd2b54098356a8f9"

다른 설치 환경에서도 이 문제를 재현할 수 있나요?

이 문제가 2년 이상 지난 후에야 나타나고, 다른 보고도 없다는 점이 다소 놀랍습니다 :thinking:

아마도 아닐 겁니다. 저는 개발용 컴퓨터에서 동일한 백업 파일을 성공적으로 복원했습니다.

이 문제가 발생한 원인이 무엇인지, 또는 어떻게 해결할 수 있는지 혹시 아는 게 있나요? 데이터베이스를 삭제한 후 복원이 가능했습니다. 데이터베이스 삭제가 실제 해결책이었지만, (제 것으로 보이는) 문제를 내가 일으킨 것이므로 해결책에 대한 자격이 있다고 생각하지 않습니다.

방금 얻은 매우 가치 있는 통찰은 hotlinked_media_status가 복원 파일에서 가장 먼저 실행되는 항목이라는 것입니다. 기존 데이터베이스에서 이를 수동으로 제거하면 복원 과정이 다음 문구(CREATE TABLE public.admin_notices)에서 실패합니다.

즉, 이는 특정 타입 정의와 관련된 문제가 아닙니다. 이는 더 큰 문제의 증상일 뿐이며, BackupRestore.move_tables_between_schemas(MAIN_SCHEMA, BACKUP_SCHEMA)가 해야 할 일을 수행하지 못하고 있다고 추정합니다.