「アップロードのクリーンアップ」を有効にすると、警告メッセージが表示されるため、恐ろしく感じられるかもしれません。既存のフォーラムを Discourse に移行する際には、この設定は無効になります。すべてのインポートスクリプトが投稿内のすべてのアップロードを正しく登録するわけではないため、有効にすると多くの添付ファイルが失われる可能性があります。
以下のクエリを使用して、アップロードが投稿によって正しく参照されているかを確認できます。
select p.post_id, u.id as upload_id
from (select id post_id, (regexp_matches(cooked, 'data-download-href=[^\\s]+/default/([a-z0-9]+)', 'g'))[1] upload_sha from posts where raw like '%upload://%' order by created_at) as p
join uploads u on u.sha1 = p.upload_sha
where not exists(select * from upload_references r where r.upload_id = u.id)
すべてが正しければ、このクエリは何も返さないはずです。Data Explorer プラグインでこのクエリを使用すると、参照されていない添付ファイルがある投稿へのリンクもきれいに表示されます。
上記のクエリで結果が返される場合は、以下のクエリを使用して不足しているアップロード参照を修正できます。
insert into upload_references(upload_id, target_type, target_id, created_at, updated_at)
select u.id, 'Post', p.post_id, u.created_at, u.updated_at
from (select id post_id, (regexp_matches(cooked, 'data-download-href=[^\\s]+/default/([a-z0-9]+)', 'g'))[1] upload_sha from posts where raw like '%upload://%' order by created_at) as p
join uploads u on u.sha1 = p.upload_sha
on conflict do nothing;
修正を行うには、直接データベースにアクセスする必要があります。