FileStore::ToS3MigrationError: 21512 个上传文件中有 182 个尚未迁移至 S3。数据库 ‘default’ 的 S3 迁移失败。
随后是来自 ‘raise_or_log’、‘migration_successful?’、‘migrate_to_s3’、‘migrate’ 以及 ‘block in migrate_to_s3_all_sites’ 的部分堆栈跟踪信息。
我在运行任务 uploads:migrate_to_s3 时两次遇到这些错误。大约 1% 的文件未能成功迁移,导致在重新生成(rebake)后网站上的附件链接损坏。这些问题似乎都出现在我最初创建此 Discourse 实例的头几个月内的旧文件上。
深入检查 S3 存储桶后发现,这些文件似乎确实已成功上传到 S3,只是在重新生成后链接不正确。
重新运行迁移(在再次重新生成之前)似乎以某种原因解决了该问题。尽管在运行 migrate_to_s3 任务期间仍会出现相同的错误。
然而,如果我再运行一次重新生成,附件链接又会再次损坏。
我认为这些并非错误,但我仍会附上重新生成期间的输出信息:
/var/www/discourse/lib/file_store/base_store.rb:6: warning: already initialized constant FileStore::BaseStore::UPLOAD_PATH_REGEX
/var/www/discourse/lib/file_store/base_store.rb:6: warning: previously definition of UPLOAD_PATH_REGEX was here
/var/www/discourse/lib/file_store/base_store.rb:7: warning: already initialized constant FileStore::BaseStore::OPTIMIZED_IMAGE_PATH_REGEX
/var/www/discourse/lib/file_store/base_store.rb:7: warning: previous definition of OPTIMIZED_IMAGE_PATH_REGEX was here
运行 rake posts:missing_uploads 或 PostCustomField.where(name: Post::MISSING_UPLOADS) 并未发现任何问题,因此这似乎与此无关。