[サイトダウン :(] アップグレード\/再構築の失敗 - DB移行の問題?

本日Discourseの最新バージョンへのアップグレードを行っていますが、再構築が失敗しており、原因が正確にはわかりません。インストールは数世代前(おそらく2.8x)でした。Discourseのアップグレード時に手動でのプルと再構築を求められた際(ほとんどの場合求められます)、Dockerイメージの更新は問題なく行えましたが、再構築は成功しませんでした。

以下は、discourse-doctorで「error」を検索した結果です。スクリーンショットで申し訳ありません。使用しているWebベースのVNCクライアントはコピー&ペーストに対応していないようです。

image

racerx という名前のユーザーが2人いるようです。同様の問題に関するトピックがこちらにあります。

こちらも最近のものです。

「いいね!」 4

ありがとうございます。その方向で進めてみます。幸運を祈ってください。

「いいね!」 1

インデックスの再作成をどのように開始すればよいかわかりません。開始することはできましたが(Webからはアクセスできません)、アプリに入ってから先に進むことができません。

image

「いいね!」 2

コンテナ内でこれらのコマンドを実行する必要があります。たとえば、次のようになります。

./launcher start app
./launcher enter app

sudo postgres の前に

編集:ああ、コンテナに入ったのですね。

その postgres -c の前に sudo が必要です。

「いいね!」 4

sudoは機能しないと思いますが、suは機能したので、現在postgresを調べています。

これで重複を実際に修正する方法を見つける必要があります。クエリは次のようになります。

UPDATE users SET username_lower = 'xxx' WHERE id = xxx;

いくつかバリエーションを試しましたが、うまくいきませんでした。エラーが列関連であるため、正しい構文が100%わからないことはお察しの通りです。

さらに調査を続けます。重複がいくつあるかもまだわかりません…

/edit… レーサーエックスだけだ。くそー、レーサーエックス!

image

「いいね!」 2

それを修正する方法を見つけましたか?

ユーザーを正しく識別するために、ユーザーID(一意)も返すようにし、その後、これらのユーザーのいずれかを名前変更します:)

「いいね!」 4

@Canapin さんのお話を発展させ、まだ理解されていない方のために説明すると、racerx が唯一重複しているユーザー名であることがすでにわかっているので、ユーザー名を一意にするのは簡単なはずです。

まず、まだ行っていない場合は、racerx2 がすでに存在しないことを確認してください。そうしないと、問題を別のユーザー名に移動するだけになります。(ID が返された場合は、別のユーザー名を試してください。)

SELECT id FROM users WHERE username_lower = 'racerx2';

未使用のユーザー名が見つかったら、重複している racerx アカウントの ID を取得します。

SELECT id from users WHERE username_lower = 'racerx';

どちらでも構いませんが、最高のものを使用することをお勧めします。次に、そのユーザー名を変更します。(必要に応じて racerx2 を別のユーザー名に置き換え、12345 を選択した racerx の ID に置き換えてください。)

UPDATE users SET username_lower = 'racerx2' WHERE id = 12345;
「いいね!」 3

更新(数日間ドラフトに入っており、申し訳ありません)なんとか解決したようです。やったことが正しいアプローチだったかはわかりませんが、正常に再構築されました。

username_lower 列の racerx 値を構文で変更/追加するのが難しいことがわかりましたので、別の方法で対応しました。行の ID を検索し、特定の行の username_lower 値を変更しました。

まず、username_lower 列に「racerx」が含まれる users テーブルの行のレポートを取得しようとしました。

select all from users where username_lower ='racerx';

これに基づいて、racerxracerx2 に変更することにしました。正確に何を入力したかは覚えていませんが、おそらく UPDATE SET from users username_lower racerx to racerx2 のようなものだったと思います。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.