도메인 변경 후 모든 이미지 재생성해도 표시되지 않음

도메인 변경 및 포스트 리베이킹 후 모든 이미지가 깨졌습니다

현재 포스트에는 이 문제가 없으며, 기존 포스트에만 나타납니다.

S3를 사용 중입니다.

Change the domain name or rename your Discourse 를 따랐나요?

S3 설정에 대해 무언가를 변경했나요? 도메인 이름도 변경되었나요? 그것은 또 다른 문제입니다.

S3 버킷 이름도 변경했습니다.

하지만 모든 파일을 새 버킷으로 이동했습니다.

예를 들어:

이것은 데이터베이스에서 압축을 푼 이전 백업입니다.

해당 문제를 조사해 보니, 이전 짧은 URL로 전체 URL을 찾지 못하는 것 같습니다.

그렇다면 데이터베이스를 다시 매핑하여 업로드된 파일에 새로운 URL이 포함되도록 해야 합니다.

새로운 업로드는 정상적으로 작동합니까?

네, 모든 새 업로드가 정상적으로 작동합니다.

기존에 존재하던 첨부파일의 경우에만 문제가 발생합니다.

데이터베이스 덤프 SQL도 확인해 보았습니다.

uploads 테이블은 여전히 다음 값을 사용하고 있습니다:

//com-ossez-www-discourse.s3.dualstack.us-east-2.amazonaws.com/discourse-uploads/original/2X/e/e7ace3e99f6d7dd9520bebfe4f2de91898a05849.png

이는 버킷 이름을 변경했기 때문입니다.

이 값은 다음과 같이 되어야 합니다:

//com-isharkfly-www-discourse.s3.dualstack.us-east-2.amazonaws.com/discourse-uploads/original/2X/e/e7ace3e99f6d7dd9520bebfe4f2de91898a05849.png

원인을 찾았고 웹사이트에서 모든 문제를 수정했습니다.

중국어 버전의 단계는 수정 로그를 참조해 주세요: 不是很严重,但是也有点严重的问题 —— 附件无法显示 - Discourse - iSharkFly

주된 원인은 업로드 테이블이었습니다.

이 테이블의 행이 왜 잘못되었는지 정확히 알 수 없으나, 이 테이블의 약 60%에 해당하는 데이터가 손실되어 있었습니다. 로컬 백업을 사용하여 데이터를 SQL로 변환한 후 프로덕션 환경에서 실행하여 손실된 데이터를 모두 삽입해야 했습니다.

이후 게시물을 다시 생성(rebake)하면 모든 문제가 해결됩니다.

이 문제는 소스 코드의 문제가 아니며, base62 인코딩/디코딩은 그 역할을 정상적으로 수행했습니다.

감사합니다. 팀.

CC: @pfaffman