luxaritas
(Jonathan Romano)
2022 年 3 月 24 日午後 9:25
1
Discourse インスタンスのアップグレードを試みましたが、いくつかの問題により、部分的に適用された状態で失敗したようです。./launcher rebuild app を実行すると、次のようなエラーメッセージが表示され、これはすでに(部分的に)適用されたマイグレーションを示しているようです。
I, [2022-03-24T21:13:16.043071 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
この状態から復旧する方法(または、最初からやり直す必要があるかどうか)についてのガイダンスがあれば幸いです。よろしくお願いします!
「いいね!」 1
luxaritas
(Jonathan Romano)
2022 年 3 月 24 日午後 9:29
3
はい、承知しております(そして、すでに実行しました)。しかし、アップグレードに関しては次に何をすべきか疑問に思っています。
「いいね!」 2
pfaffman
(Jay Pfaffman)
2022 年 3 月 24 日午後 9:33
4
そうですか。それは役に立たなかったようですね
似たような問題を抱えていましたが、私の解決策がお役に立つ可能性は低いようです。
app.yml で SKIP_POST_DEPLOYMENT_MIGRATIONS を設定していませんか?もしそうなら、データベースをゼロに設定して移行し、再構築する必要がありますが、それが問題だとは思いません。
pfaffman
(Jay Pfaffman)
2022 年 3 月 24 日午後 9:39
6
それが私が考えていたことです。ですから、ある特定の地点から現在の地点への移行能力に関連する実際の問題があるのかもしれません。しかし、それは起こるべきではありません。
undasein
(Andres Garrido)
2022 年 3 月 31 日午後 1:55
7
これを見てください:
Sorry. I’m on my phone and not quite thinking well enough to explain…
After the start app
su - postgres
psql discourse
And then the
drop table discourse_reactions_reactions ;
And then type exit or control-d a few times to get out of everything
エラーが発生していたテーブルをすべて(一つずつ、最終的に7つになりました)空にしたところ、エラーなしでアプリを再構築できるようになりました。
あなたのケースでは、問題はカラムにあるようです:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
おそらく、それが属するテーブルを見つけて空にする必要があるでしょう。あるいは、単にそのカラムを削除することもできます。
問題は、部分的に移行した場合に、それらのテーブルがすでに作成されているため、再度作成できずにエラーが返されることにあると思います。このプロセスに条件を追加して、エラーが発生しないようにすることは可能でしょうか?(私は専門家ではありません) @pfaffman
pfaffman
(Jay Pfaffman)
2022 年 3 月 31 日午後 3:32
8
その通りだと思います、@undasein 。
ブックマークテーブルから bookmarkable_id 列を削除したいのだと思います。コンテナに入り、次のようにPostgresに入った後:
cd /var/discourse
./launcher enter app
su - postgres
psql
次に次を実行します:
ALTER TABLE bookmarks
DROP COLUMN bookmarkable_id
DROP COLUMN bookmarkable_type;
しかし、フォーラムが稼働している場合、データベースのみのバックアップを取得しておくのも悪い考えではありません。もし稼働していない場合は、上記の enter app の行の後に discourse backup でバックアップできます。
「いいね!」 1
私も同じ問題が発生しています!これが正しい解決策ですか?
pfaffman
(Jay Pfaffman)
2022 年 3 月 31 日午後 11:08
10
それが私の推測でした。試してみて、結果を教えてください。
私はディスコースに詳しくありません。
@sam 、今後の進め方について何かアイデアはありますか?標準のインストールとアップグレードは悪夢であることが判明しました。
上記は、この問題を解決するための正しい方法ですか?
よろしくお願いします。
残念ながら、機能しませんでした。まだ以下のエラーが発生しています。
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
これらのコマンドの後に、他に取るべきアクションはありましたか?
ALTER TABLE bookmarks
DROP COLUMN bookmarkable_id
DROP COLUMN bookmarkable_type;
ご協力ありがとうございます。
Benjamin_D
(Benjamin Decotte)
2022 年 4 月 2 日午前 5:56
13
ニックさん、こんにちは。
これを再現しようとしていますが、あなたのインスタンスのコミットは何ですか?
次を試すことができます。
version: cd7ce52138bed391d5efc56366e7a6517a6079e7
これを app.yml に追加してください。これは10日前のもので、同様の問題があったと思われるロールバックされたコミットのやり直しの直前です。
「いいね!」 2
ベンさん、おはようございます。
これを実行するためのコマンドを教えていただけますか?
アップデートなどは簡単にできますが、問題が発生したのは初めてで、正直に言うと、全く慣れない状況です(笑)
Benjamin_D
(Benjamin Decotte)
2022 年 4 月 2 日午前 10:10
15
./launcher start app を実行し、https://your.domain/admin でインストールされているバージョンを確認していただけますでしょうか。手順を再現して確認したいです。プラグインはありますか?
「いいね!」 2
ベンさん、こんにちは。
インストール済みバージョン: 2.9.0.beta2
(5374e587a3 )
インストール済みプラグイン:
discourse-reactions
docker_manager
styleguide
よろしくお願いします。
ニック
Benjamin_D:
./launcher start app
./launcher start app
-bash: ./launcher: No such file or directory
サーバー上のUbuntuアップデートをいくつか確認し、すべて最新の状態にしました。
もう一度試しましたが、まだ以下のエラーが発生します。
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
pfaffman
(Jay Pfaffman)
2022 年 4 月 2 日午後 8:47
20
これはもっともらしい解決策のようです。これにアップグレードして、現在のバージョンに到達できるかもしれませんか?そのようなことが私には理にかなっています。
「いいね!」 1