リレーション「discourse_automation_automations」が3.3beta1から3.5beta7へ復元

データベースを復元しようとしています。

    <meta name="generator" content="Discourse 3.3.0.beta1-dev - https://github.com/discourse/discourse version a4022f69f31af611bc0e21258b0ccb77dec38ba3">

から現在に。同じ app.yml をコピーして復元しています(新しいVMで、pgのアップグレードを回避しようとしていますが、復元ではなくそちらを試すべきかもしれません)。

このエラーが発生しています。

PG::DuplicateTable: ERROR:  relation "discourse_automation_automations" already exists

マイグレーションが再度チェックインされ、このサイトがそれらの数回のコミット中に構築された別のケースのようです。

しかし、どうすればよいかわかりません。このテーブルを作成しようとするマイグレーションを削除すべきでしょうか?

古いデータベースは 20240122015630 で、新しいデータベースは 20250617085536 です。

新しいソースでこれを見つけました。

db/migrate/20190601000001_create_automations_table.rb:    create_table :discourse_automation_automations do |t|

しかし、なぜこのマイグレーションがそれを行わないように認識しないのでしょうか?テーブルは両方とも同じフィールドを持っています。2019年のマイグレーションを削除すべきでしょうか?

3.3beta1は、4月にプラグインがコアに含まれる前だったと思います。これが何らかの問題を引き起こす可能性はありますか?例えば、プラグインが現在コアに含まれている一方で、app.yml を介して別途インストールされている場合などです。

それは良い考えですが、そうではありません。もう一度含めるつもりはありません。追加を試みるべきだったかもしれませんが(しかし、ざっと見たところそれが見当たりません)。私の現在の考えは、古いサイトのすべてのオートメーションテーブル(空です)を削除し、新しいバックアップを作成してそれを復元することです。

「いいね!」 1

そして、discourse_automations_automations が見つからなかったため、失敗しました。 :person_shrugging:

これらを削除しました:

20210108134117_add_pending_pms_table.rb
20210512090204_add_timestamps_to_automations.rb
20210530122323_move_triggers_to_fields.rb
20211119103353_adds_discourse_automation_user_global_notice.rb
20230412120414_add_prefers_encrypt_field_to_pending_pms.rb

そして、おそらく 20190601000001_create_automations_table.rb も削除すべきでしたが、代わりに unless table exists コードを追加しました(削除したときに別の問題があったのだと思います)。

そして、ついに復元することができました。

「いいね!」 1

このトピックを閉じてもよろしいでしょうか?それとも、オープンエンドにしたい場合は Dev または Installation > Hosting に移動しますか?

はい。閉じてもらって大丈夫です。これが他の誰かに起こるかどうかは不明なので、役に立つかどうかはわかりません。