'rename_discourse_rewind_disabled_to_enabled' でのマイグレーションエラー

再構築に失敗しました〜ログは以下の通りです。

discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled: (StandardError)

You must drop a column's default value before marking it as readonly
I, [2026-01-08T16:18:49.016491 #1]  INFO -- : Terminating async processes
I, [2026-01-08T16:18:49.018961 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 46
I, [2026-01-08T16:18:49.020147 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 113
2026-01-08 16:18:49.019 UTC [46] LOG:  received fast shutdown request
113:signal-handler (1767889129) Received SIGTERM scheduling shutdown...
2026-01-08 16:18:49.023 UTC [46] LOG:  aborting any active transactions
2026-01-08 16:18:49.034 UTC [46] LOG:  background worker "logical replication launcher" (PID 60) exited with exit code 1
2026-01-08 16:18:49.040 UTC [55] LOG:  shutting down
2026-01-08 16:18:49.042 UTC [55] LOG:  checkpoint starting: shutdown immediate
2026-01-08 16:18:49.057 UTC [55] LOG:  checkpoint complete: wrote 32 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.007 s, sync=0.004 s, total=0.017 s; sync files=16, longest=0.002 s, average=0.001 s; distance=180 kB, estimate=180 kB
2026-01-08 16:18:49.067 UTC [46] LOG:  database system is shut down
113:M 08 Jan 2026 16:18:49.108 # User requested shutdown...
113:M 08 Jan 2026 16:18:49.108 * Saving the final RDB snapshot before exiting.
113:M 08 Jan 2026 16:18:49.123 * DB saved on disk
113:M 08 Jan 2026 16:18:49.123 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 4483 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

申し訳ありません、私のミスです。マイグレーションでデフォルト/NULL制約の順序を間違えてしまいました :man_facepalming:

「いいね!」 4

大丈夫ですよ、修正を待っています。頑張ってくださいね〜〜〜〜〜

「いいね!」 2

私も前回のアップデート後に同じ問題が発生しています。

@zogstrip のそのマイグレーションの修正が latest で利用可能になったので、再度アップグレードを実行すれば再び動作するはずです。

「いいね!」 2

再構築してみましたが、まだうまくいきません

「修正」とされるもののテストが実際に行われていないのでしょうか?それで修正済みと見なされているのですか?

不十分な品質保証(QA)の繰り返しパターンのように思えます…この1つの問題だけでも、次から次へと少なくとも3回は発生しました。

rebuildを試しましたが、まだ失敗しました。原因は何でしょうか?

I, [2026-01-09T05:09:31.402079 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2026-01-09T05:09:31.409979 #1]  INFO -- : > sleep 10
4481:C 09 Jan 2026 05:09:31.416 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4481:C 09 Jan 2026 05:09:31.416 # Redis version=7.0.15, bits=64, commit=00000000, modified=0, pid=4481, just started
4481:C 09 Jan 2026 05:09:31.416 # Configuration loaded
4481:M 09 Jan 2026 05:09:31.417 * monotonic clock: POSIX clock_gettime
4481:M 09 Jan 2026 05:09:31.418 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
4481:M 09 Jan 2026 05:09:31.418 # Failed listening on port 6379 (TCP), aborting.
I, [2026-01-09T05:09:41.418357 #1]  INFO -- : 
I, [2026-01-09T05:09:41.421210 #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: (StandardError)
You must drop a column's default value before marking it as readonly
/var/www/discourse/lib/migration/column_dropper.rb:15:in `mark_readonly'
/var/www/discourse/plugins/discourse-rewind/db/migrate/20260105171115_rename_discourse_rewind_disabled_to_enabled.rb:15:in `up'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/migration.rb:993:in `public_send'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/migration.rb:993:in `exec_migration'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `block in exec_migration'
I, [2026-01-09T05:09:52.683547 #1]  INFO -- : Terminating async processes
I, [2026-01-09T05:09:52.684945 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 45
112I, [2026-01-09T05:09:52.685640 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 112
:signal-handler (1767935392) Received SIGTERM scheduling shutdown...
2026-01-09 05:09:52.686 UTC [45] LOG:  received fast shutdown request
2026-01-09 05:09:52.691 UTC [45] LOG:  aborting any active transactions
2026-01-09 05:09:52.708 UTC [45] LOG:  background worker "logical replication launcher" (PID 59) exited with exit code 1
2026-01-09 05:09:52.713 UTC [54] LOG:  shutting down
2026-01-09 05:09:52.716 UTC [54] LOG:  checkpoint starting: shutdown immediate
112:M 09 Jan 2026 05:09:52.718 # User requested shutdown...
112:M 09 Jan 2026 05:09:52.718 * Saving the final RDB snapshot before exiting.
2026-01-09 05:09:52.734 UTC [54] LOG:  checkpoint complete: wrote 17 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.007 s, sync=0.004 s, total=0.020 s; sync files=14, longest=0.002 s, average=0.001 s; distance=71 kB, estimate=71 kB
2026-01-09 05:09:52.750 UTC [45] LOG:  database system is shut down
112:M 09 Jan 2026 05:09:52.763 * DB saved on disk
112:M 09 Jan 2026 05:09:52.763 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 4484 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd'=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
「いいね!」 1

正直、あなたのDiscourseのインストールで何が問題なのかわかりません。私はサーバーターミナルを使って2番目のフォーラムを再構築したところ、すべて正常に戻りました。今から3番目のフォーラムを再構築するつもりですが、これも正常であることを願っています。

Discourseのファイルを変更したり、プラグインを手動で追加/インストールしたりした場合、それが将来的に問題を引き起こす可能性があることは知っています。

待ってください、辛抱強く、私よりも詳しい人が助けてくれるでしょう。これが私がこのシステムを好きになり、乗り換えた理由の一つ、コミュニティです。それがこのシステムをさらに素晴らしいものにしています。

編集:
しかし、3番目のフォーラムでは、再構築は機能しませんでした。
失敗

Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ がリターンコード #<Process::Status: pid 4466 exit 1> で失敗しました
失敗箇所: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn’
exec は、パラメータ {“cd”=>“$home”, “tag”=>“migrate”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]} で失敗しました
bootstrap は終了コード 1 で失敗しました
ブートストラップに失敗しました 上にスクロールして、以前のエラーメッセージを探してください。複数ある可能性があります。
./discourse-doctor が問題を診断するのに役立つかもしれません。
63e30cde8c7295d25def35eef74dea30714627609c3d38b49a8f80865e5759cf

そして今、私の2番目のフォーラムにリダイレクトされる…何…何… :rofl:

ご返信ありがとうございます。私は何も変更を加えておらず、追加のプラグインもインストールしていません。

「いいね!」 1

私の3番目のフォーラムには手動でインストールされたプラグインもありませんが、再構築が失敗し、2番目のフォーラムにリダイレクトされた後…設定ファイル(nano containers/app.yml)も確認しましたが、そこもすべて問題ありません…一体どうなっているのでしょうか?:smiley:

「いいね!」 1

再構築成功

「いいね!」 2

私には合いませんでした :frowning: 幸い、2026年5月1日のサーバー復元ポイントがあります。2度目ですが、Discourseのアップデートも再構築もできません。もう一度復元しているところですが、一つだけはっきりしています。

  1. すべてのトピック/記事をテキストファイルにバックアップする。
  2. これがDiscourseの新規インストール、または別のシステム(それはしたくありません)で解決されることを願っています。

どこかで何かを見落としていて、それが何なのか分からず、気が狂いそうです。しかし、どうやら逆行性ウランが影響しているようです。とりあえずこのままにして、悲しいのでHELLDIVERS 2のバグ修正でもしに行きます :rofl:

あなたのいらだちは理解できますし、お詫び申し上げます。私の「修正」を、ローカル開発データベースと、真新しいデータベースの両方でローカルテストしたところ、どちらも問題なく動作しました。その後、私が管理するコミュニティのために実行しているホストインスタンスでテストしたところ、そこでも問題なく動作しました。また、GitHub上のすべての公開CI(継続的インテグレーション)および社内のCIとスモークテストもパスしました。

たまたま、それらのデータベースには、そのマイグレーションの影響を受けるデータが一つもありませんでした :expressionless_face:

皆様に悪い経験をさせてしまい申し訳ありません。次回はもっと注意します。

「いいね!」 3

それで…今試しても安全ですか、それとも事態を悪化させるだけでしょうか?私も同じ問題を抱えており、これを見てからまだ再構築を試みていません。

再構築後にデータが最新ではないことに気づき、管理画面から一昨日のバックアップを使ってリストア操作を行いました。現時点では問題は確認されていません。

「いいね!」 1

問題なく動作し、他の人が確認しても通常通り読み込まれているようです

@here 問題が発生している皆様へ、私と@david は根本原因を見つけた かもしれない のですが、ローカルでの再現が複雑です。

以下の SQL クエリを実行して、結果をここで報告していただけますか?

クエリ #1

SELECT table_schema, column_name, column_default
FROM information_schema.columns
WHERE table_name = 'user_options' 
AND column_name = 'discourse_rewind_disabled'
ORDER BY table_schema;

クエリ #2

SELECT n.nspname, n.oid
FROM pg_namespace n
JOIN pg_class c ON c.relnamespace = n.oid
WHERE c.relname = 'user_options'
ORDER BY n.oid;

クエリ #3

SELECT table_schema, column_default IS NOT NULL as has_default
FROM information_schema.columns
WHERE table_name = 'user_options'
AND column_name = 'discourse_rewind_disabled';

クエリ #4

SELECT nspname, oid FROM pg_namespace
WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast', 'public')
AND nspname NOT LIKE 'pg_temp%'
AND nspname NOT LIKE 'pg_toast_temp%'
ORDER BY oid;

ありがとうございます :folded_hands:

「いいね!」 2

はい、承知いたしました。今外にいるので、戻ったら確認します。