Discourse のリストアが「relation already exists」エラーで失敗

不幸な出来事の連続で、最新の完全バックアップから復元できないようです。

詳しい経緯は後ほど書きますが、現時点で直面している問題は、バックアップ復元中に以下のエラーが発生することです。

データベースの移行中…
EXCEPTION: rake db:migrate
データベースの移行に失敗しました。
rake aborted!
StandardError: エラーが発生しました。この移行および以降のすべての移行がキャンセルされました: (StandardError)

PG::DuplicateTable: ERROR: 関係 "gamification_leaderboard_scores" は既に存在します

これはプラグインに起因する問題のようですが、復元を成功させるための解決策を見つけるために、ログの解釈についてお手伝いいただければ幸いです。

さて、以下が起きたことです。

本日早些、Discourse を 2026.5.0-latest b0873d3ecd に更新しました。この更新により破壊的変更が導入され、プライマリテーマ が機能しなくなりました。更新前に互換性を確認すべきでした。

パニックになり、テーマと互換性のある Discourse バージョンに戻すため、最後のバックアップから復元できるだろうと考えました。復元を行う前に、万が一の際にできるだけ多くの復元ポイントを持っておきたいと考え、完全バックアップを取得しました。

しかし、この最初の復元中に何かがうまくいかず、Discourse が起動したところ、過去 15 日間のコンテンツが欠落していました。詳しく調べてみると、Meta のトピック に、バックアップファイルを 2026-04-28-033449-v20260420014648.sql.gz から 2026-04-28-033449-v20260407093145.sql.gz に名前を変更すると良いという提案がありました。なぜこれが機能したのかは不明ですが、少なくとも昨日のバックアップまで戻ることができました。

今朝取得した最後の完全バックアップからの復元はまだ必要です。これが冒頭で示したエラーを引き起こしているものです。

これは他のいくつかのプラグインでも発生したことがあります。どうやら、テーブルを作成するマイグレーションが実行されたにもかかわらず、マイグレーションシステムがその実行を認識していないようです。

私自身も、それを十分に理解して誰かに説明できるほど詳しくはありません。大まかに言うと、マイグレーション実行前にリストアを停止(リストアコマンドにはそのためのスイッチがあります)し、テーブルを削除する必要があると思います。もしこれが意味が通じる、あるいはほぼ意味が通じるなら、https://ask.discourse.com/ の助けを借りて解決策を見出せるかもしれません。

それでも解決しない場合、急いでいて予算もあるなら、Marketplace で質問するか、私にメールしてください。急いでいない、または予算がない場合は、あなたにも理解できる形で対処法を説明してくれる人が見つかる可能性があります。