멀티사이트를 시도하고 있습니다. 두 번째 인스턴스를 설치했고 잘 작동합니다.
하지만 이제 빌드를 다시 생성할 수 없습니다. 로그에는 다음과 같이 표시됩니다:
warning " > babel-plugin-debug-macros@0.4.0-pre1" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-ffab61d1-8b70-4cda-8f38-dde575adc062 > discourse > @uppy/xhr-upload@3.1.0" has inc
orrect peer dependency "@uppy/core@^3.0.6".
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "idx_category_users_user_id_category_id"
DETAIL: Key (user_id, category_id)=(-4, 9) already exists
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Pro
cess::Status: pid 695 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:
migrate'"]}
bootstrap failed with exit code 1
플러그인 없이 시도해 봤지만 여전히 깨져 있습니다. 앱은 시작할 수 있지만 빌드를 다시 생성할 수는 없습니다.
Falco
(Falco)
3월 14, 2023, 2:27오전
2
네, 그리고 그때 삭제하려고 했어요 (멀티사이트에서 플러그인을 수동으로 선택하지 않으면 테스트할 수 없다는 걸 확인했거든요).
Falco
(Falco)
3월 14, 2023, 2:38오전
4
그 오류는 해당 플러그인에서 발생하며, 플러그인을 제거해도 데이터베이스에 추가된 내용은 영구적이므로 데이터베이스 레코드를 수동으로 수정하고 중복 항목을 제거해야 합니다.
감사합니다. 제가 찾는 것이 맞는지 확인해 주실 수 있을까요?
discourse=# \d category_users
Table "public.category_users"
Column | Type | Collation | Nullable | Default
--------------------+-----------------------------+-----------+----------+--------------------------------------------
id | integer | | not null | nextval('category_users_id_seq'::regclass)
category_id | integer | | not null |
user_id | integer | | not null |
notification_level | integer | | not null |
last_seen_at | timestamp without time zone | | |
Indexes:
"category_users_pkey" PRIMARY KEY, btree (id)
"idx_category_users_category_id_user_id" UNIQUE, btree (category_id, user_id)
"index_category_users_on_user_id_and_last_seen_at" btree (user_id, last_seen_at)
DROP INDEX idx_category_users_category_id_user_id를 시도해 보았지만, 여기서는 정확한 명령어가 필요할 것 같습니다
음, 아마도 수십 번의 설치가 있었고, 내가 아는 한 이런 종류의 문제가 없었어야 합니다.
구체적인 문제는 무엇인가요?
픽스처 스크립트는 봇 사용자를 시드합니다(관리자가 rails 콘솔을 실행할 필요가 없도록 하기 위해서)가, 두 번 시도하면 실패할 수 있습니다. 다만 그에 대한 체크가 있습니다. 이 체크가 완벽하게 견고한지 확인해 보겠습니다. 이 설치 방식에서는 두 번 실행되고 있나요?
인덱스를 삭제해서는 안 됩니다!
중복된 레코드만 삭제하면 됩니다.
user_id가 -4이고 category_id가 9인 두 번째 레코드를 찾아서 해당 id를 사용하여 삭제하세요.
위험한 작업이므로 먼저 다음을 실행하여 확인하세요:
SELECT FROM category_users WHERE id = <두 번째 id>;
이 쿼리가 레코드 1개만 반환하는지 확인한 후, 다음을 실행하세요:
DELETE FROM category_users WHERE id = <두 번째 id>;
봇에 대해 어떤 변경 사항을 했는지 기억하시나요?
참고로, 이 문제가 해결되면 플러그인을 제거할 필요가 없다고 생각합니다. 하지만 왜 이런 상황이 처음부터 발생했는지에 대해 매우 궁금합니다. 다른 보고가 없었거든요?
로버트, 감사합니다. 저는 분명히 DB 전문가가 아니어서 질문드렸고, 참고로 백업은 이미 가지고 있습니다. 하지만 의도적으로 잘못된 일을 하는 것보다는 항상 더 나은 방법을 찾는 게 좋으니까요
봇은 제가 수정한 것이 아니지만, 모든 그룹에서 기본 카테고리를 사용하는데, 이렇게 하면 구현이 깨지는 것 같습니다.
메타 포럼에 더 많은 정보가 있습니다. 이 문제를 찾아내고, 유사한 문제를 방지하기 위해 몇 가지 체크를 추가해 주실 수 있기를 바랍니다:
Looks like your automatic watching groups have a duplicate in them. Not sure how this is possible, but can you try resetting the site setting for auto watching ?