저도 같은 문제를 겪었습니다. 이 스크립트를 실행하려면 ask.discourse.com에서 꽤 많은 도움을 받아야 했는데, 시스템 관리 경험이 적은 분들에게는 그리 쉬운 작업이 아니었기 때문입니다!
다른 분들을 위해 요약해 드립니다:
표준 Docker 설치 환경에서 이 문제를 겪고 계신 분들을 위해, 위의 스크립트를 실제로 실행하는 방법을 안내해 드립니다.
셸을 열고 psql을 실행합니다.
-
단일 컨테이너:
cd /var/discourse ./launcher start app ## 이미 실패한 재빌드가 있었던 경우에만 필요 ./launcher enter app su -c 'psql discourse' postgres -
두 컨테이너 구성:
cd /var/discourse ./launcher enter data su -c 'psql discourse' postgres
discourse=# 프롬프트가 표시되어야 합니다. 확실하지 않다면 \conninfo를 실행해 보세요.
스크립트 실행.
프롬프트에 nat님의 위 게시물의 DO $$ ... $$; 블록 전체를 붙여넣고 Enter 키를 누르세요. 성공적으로 실행되면 다음과 같은 알림이 출력됩니다:
NOTICE: Renamed resenha_rooms to voice_rooms
NOTICE: Renamed resenha_room_memberships to voice_room_memberships
...
대신 예외가 발생하면(예: “Both Resenha and Voice tables exist. Nothing was changed.”), 작업을 중단하고 메시지를 여기에 다시 붙여넣어 주세요. 해당 경우 스크립트는 의도적으로 안전하게 설계되어 있어 아무것도 변경하지 않습니다.
종료 및 재빌드.
\q
exit
그 후 호스트로 돌아와서:
./launcher rebuild app # 단일 컨테이너
./launcher rebuild web_only # 두 컨테이너 구성 (물론 bootstrap을 통해서도 가능)
재빌드가 두 번 필요할 수 있습니다. 첫 번째 재빌드는 halfway 적용된 마이그레이션 상태를 마무리하고, 두 번째 재빌드가 깨끗하게 완료됩니다.