pfaffman
(Jay Pfaffman)
6월 24, 2025, 4:45오후
1
다음과 같은 상태의 데이터베이스를 현재 버전으로 복원하려고 시도하고 있습니다.
<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년의 그 마이그레이션을 그냥 삭제하면 될까요?
Moin
6월 24, 2025, 5:02오후
2
3.3beta1은 4월에 플러그인이 코어에 포함되기 전 버전이라고 생각합니다. 이 경우 문제가 발생할 수 있을까요? 예를 들어, 플러그인이 코어에 포함되었음에도 여전히 app.yml을 통해 별도로 설치되는 상황과 같은 경우 말이죠?
pfaffman
(Jay Pfaffman)
6월 24, 2025, 5:09오후
3
좋은 아이디어이지만, 그게 정답은 아닙니다. 다시 포함시키지는 않겠습니다. 아마 추가를 시도해 봤어야 했나 싶기도 합니다(단순히 한눈에 봐서는 보이지 않네요). 현재 제 생각은 기존 사이트에서 자동화 관련 테이블(모두 비어 있음)을 모두 삭제한 뒤, 새 백업을 만들어서 그걸 복원해 보는 것입니다.
pfaffman
(Jay Pfaffman)
6월 24, 2025, 5:17오후
4
음, 그리고 discourse_automations_automations가 없어서 실패했습니다.
pfaffman
(Jay Pfaffman)
6월 24, 2025, 7:57오후
5
그래서 다음 파일들을 삭제했습니다:
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으로 옮기실까요? 주제를 계속 열어두고 싶으시다면요?
pfaffman
(Jay Pfaffman)
9월 18, 2025, 9:14오후
7
네. 닫아도 돼요. 다른 사람에게도 이런 일이 생길지 모르겠어서, 이 정보가 유용할지 아닐지 모르겠네요.