SKIP POST DEPLOYMENT MIGRATIONS を無視すると問題が発生する

マルチサイトインスタンスで、いくつかのデータベースが移行に失敗しました。その理由は以下のとおりです。

   PG::DuplicateColumn: ERROR:  column "bookmarkable_id" of relation "bookmarks" already exists    

これらのデータベースのテーブルからその列を削除したほうがよいでしょうか?

SKIP_POST_DEPLOYMENT_MIGRATIONS が設定されており、以前のマイグレーションが完了していなかったために、以前のマイグレーションが実行されなかったことが原因のようです。

それが本当であることを確認したら、これを削除します…

「いいね!」 1

@martin 何かアイデアはありますか?最近のリファクタリングに関連しているかもしれません。

「いいね!」 2

申し訳ありません、誤報でした。このようなことをしてしまうのは本当に嫌です。

問題は、SKIP_POST_DEPLOYMENT_MIGRATIONS: 1 を設定しておきながら、multisite:migrate を実行していなかったことでした。SKIP_POST_DEPLOYMENT_MIGRATIONS=- multisite:migrate を実行した後、ブートストラップできるようになりました。

新しい半移行済みコンテナを起動した後、マイグレーションを実行するように、マルチサイト用のツールを修正する必要があります。

「いいね!」 2

しかし、奇妙なことに、Recovering from failed/partially applied upgrade も同様の問題を抱えているようで、標準的なインストールのように見えます。

この投稿に返信したかったのですが、別の問題の同じ症状だと思ったからです。 :slight_smile: 正直なところ、どちらとも断言できるほど知識はありません…

「いいね!」 1

DEV: Re-add polymorphic bookmark columns (#16261) · discourse/discourse@8040b95 · GitHub に関連しているようです。

このコミットは 2f1ddadff7dd47f824070c8a3f633f00a27aacde のやり直しです。
これは内部 CI チェックで問題が発生したため元に戻されました。調査したところ、ブックマーク列を追加する古いマイグレーションが存在し、それらの列が post migrate で削除されたため、post migrate が実行される前に列を追加する 2 つのマイグレーションが競合したことが原因でした。

「いいね!」 2

すごい。これで説明がついたようです。

これについて何かアップデートはありますか?

私のものも同じ問題が発生しています。

これを私のディスコースにコピーするにはどうすればよいですか?