백업에서 복원하는 중 오류 발생: discourse_functions.raise_discourse_voting_category_settings_readonly()이(가) 존재하지 않습니다

안녕하세요,

주요 인스턴스에서 Discourse 3.4.0.beta1-dev 버전 633a19fcc09a41a31eadd176519483217b2ec241을 사용하여 만든 백업이 있습니다.

이 백업을 로컬 인스턴스에 업로드하려고 합니다. 로컬 인스턴스는 새로 설치된 환경으로, Discourse 3.4.0.beta1-dev 버전 2b577950af5b24ed0d32eecc4ab6475619998fba를 실행 중입니다.

아래는 로그입니다. 우회 방법을 제안해 주실 수 있을까요?

[2024-08-03 16:45:29] CREATE INDEX
[2024-08-03 16:45:29] CREATE INDEX
[2024-08-03 16:45:29] ERROR:  function discourse_functions.raise_discourse_voting_category_settings_readonly() does not exist
[2024-08-03 16:45:29] EXCEPTION: psql failed: ERROR:  function discourse_functions.raise_discourse_voting_category_settings_readonly() does not exist

로컬 인스턴스에 동일한 플러그인 세트가 있나요?

안녕하세요,

아니요, 문제는 Post Voting Plugin이 설치되어 있지 않았기 때문이었습니다. 흥미롭게도, 메인 사이트에서는 이 플러그인이 활성화되어 있지 않았지만(기본적으로만 설치되어 있었음) 아마도 그 정도만으로도 오류가 발생한 것 같습니다. 감사합니다.

개발 인스턴스에서도 동일한 오류가 발생합니다. 이 인스턴스에서는 이전에 이 복원 실패를 일으켰던 최신 pgvector를 사용하기 위해 방금 pg16으로 업그레이드했고, git pull을 실행한 상태입니다.

게시물 투표(post voting)와 주제 투표(topic voting)를 모두 추가했습니다(주제 투표는 소스에 이미 있었습니다).

제 생각에는 다음과 같이 테이블을 삭제하는 것이 좋겠다고 생각했습니다.

DROP table discourse_voting_category_settings;

하지만 그러려면 CASCADE를 추가해야 했기 때문에, 용기를 내지 못하고 스테이징 환경으로 복원을 시도해 보았습니다.

스테이징 사이트에서 동일한 데이터베이스를 복원하려고 하면 다음과 같은 오류가 발생합니다:

ERROR:  type "hotlinked_media_status" already exists
EXCEPTION: psql failed: ERROR:  type "hotlinked_media_status" already exists
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'

그건 좀 다른 것 같습니다. 지난 3주 동안 그 사실을 잊고 있었는데, 그 이후로 게시글 투표 플러그인이 설치되지 않은 상태에서 백업 복원이 실패한 경우가 몇 번 있었습니다. 그러니 그 부분은 확실한 문제입니다.

하지만 hotlinked_media_status는 2022년에 추가된 코어 테이블이므로… 이건 분명 다른 문제일 겁니다.

./db/migrate/20220428094026_create_post_hotlinked_media.rb

(참고로 지난 11년간의 모든 이슈에 대해 일지를 작성해 왔는데, 이 건에 대한 언급은 없습니다)

음, 개발 인스턴스에 프로덕션 사이트와 동일한 플러그인이 모두 설치되어 있는지 확인하고 거기에 백업을 복원했습니다!

하지만 스테이징 사이트는(어떤 이유로든 microsoft auth 플러그인이 빠져 있지만, 그게 원인은 아니겠죠?!?!?!) 여전히 EXCEPTION: psql failed: ERROR: type "hotlinked_media_status" already exists 문제가 있습니다.

하지만 만약 제가 검색만 했더라면:

비슷한 문제가 한 번 수정된 적이 있는 것 같습니다. . .