3.3beta1에서 3.5beta7로 복원 시 "discourse_automation_automations" 관계 오류

다음과 같은 상태의 데이터베이스를 현재 버전으로 복원하려고 시도하고 있습니다.

    <meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version a4022f69f31af611bc0e21258b0ccb77dec38ba3">

같은 app.yml을 복사하여 복원 작업(새 VM에서 수행 중, pg 업그레이드를 우회하려는 시도이나, 복원 대신 업그레이드를 시도해야 할 수도 있음)를 진행 중입니다.

다음과 같은 오류가 발생합니다:

PG::DuplicateTable: ERROR:  relation "discourse_automation_automations" already exists

어떤 마이그레이션이 다시 체크인되어 해당 사이트가 그 몇 가지 커밋 사이에 빌드된 또 다른 사례인 것 같습니다.

하지만 무엇을 해야 할지 모르겠습니다. 이 테이블을 생성하려는 마이그레이션을 삭제해야 할까요?

구버전 데이터베이스는 20240122015630이고, 신버전은 20250617085536입니다.

새 소스에서 다음 내용을 확인했습니다:

db/migrate/20190601000001_create_automations_table.rb:    create_table :discourse_automation_automations do |t|

하지만 어째서인지 이 마이그레이션은 해당 작업을 수행하지 말아야 한다는 것을 인식하지 못하는 것 같습니다. 해당 테이블은 양쪽에서 동일한 필드를 가지고 있습니다. 2019년의 그 마이그레이션을 그냥 삭제하면 될까요?

3.3beta1은 4월에 플러그인이 코어에 포함되기 전 버전이라고 생각합니다. 이 경우 문제가 발생할 수 있을까요? 예를 들어, 플러그인이 코어에 포함되었음에도 여전히 app.yml을 통해 별도로 설치되는 상황과 같은 경우 말이죠?

좋은 아이디어이지만, 그게 정답은 아닙니다. 다시 포함시키지는 않겠습니다. 아마 추가를 시도해 봤어야 했나 싶기도 합니다(단순히 한눈에 봐서는 보이지 않네요). 현재 제 생각은 기존 사이트에서 자동화 관련 테이블(모두 비어 있음)을 모두 삭제한 뒤, 새 백업을 만들어서 그걸 복원해 보는 것입니다.

음, 그리고 discourse_automations_automations가 없어서 실패했습니다. :person_shrugging:

그래서 다음 파일들을 삭제했습니다:

20210108134117_add_pending_pms_table.rb
20210512090204_add_timestamps_to_automations.rb
20210530122323_move_triggers_to_fields.rb
20211119103353_adds_discourse_automation_user_global_notice.rb
20230412120414_add_prefers_encrypt_field_to_pending_pms.rb

20190601000001_create_automations_table.rb도 삭제했어야 했는데, 대신 unless table exists 코드를 추가했습니다(삭제했을 때 다른 문제가 있었던 것 같아서요).

드디어 복구에 성공했습니다.

그런데 다시 빌드하면 데이터베이스가 마이그레이션을 시도할 때 동일한 오류가 발생합니다.

어떻게 해야 레일즈(Rails)가 이 마이그레이션들이 이미 실행된 것이라고 믿게 만들 수 있을지 모르겠습니다. 그래서 이렇게 시도해 보았습니다:

INSERT INTO schema_migrations(version) VALUES
('20190601000001'),
('20210108134117'),
('20210512090204'),
('20210530122323'),
('20211119103353'),
('20230412120414');

하지만 이것도 작동하지 않았습니다.

아마 2021년에 만든 것들만 건너뛰면 될까요? 아니면 202105까지만?

하지만 현재 실행 중인 버전은 2024년 1월 버전입니다.

구 서버에서 첫 번째 데이터베이스(schema_migrations를 건드리기 전 상태)는 복원할 수 있었기 때문에, 적어도 처음 상태로 돌아온 셈입니다. 이제 커밋과 마이그레이션을 어떤 방식으로 확인해야 하는지 알아야 할 것 같습니다.

이 주제를 닫을 수 있을까요? 아니면 Development 또는 #installation:hosting으로 옮기실까요? 주제를 계속 열어두고 싶으시다면요?

네. 닫아도 돼요. 다른 사람에게도 이런 일이 생길지 모르겠어서, 이 정보가 유용할지 아닐지 모르겠네요.