pfaffman
(Jay Pfaffman)
1
データベースを復元しようとしています。
<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年のマイグレーションを削除すべきでしょうか?
Moin
2
3.3beta1は、4月にプラグインがコアに含まれる前だったと思います。これが何らかの問題を引き起こす可能性はありますか?例えば、プラグインが現在コアに含まれている一方で、app.yml を介して別途インストールされている場合などです。
pfaffman
(Jay Pfaffman)
3
それは良い考えですが、そうではありません。もう一度含めるつもりはありません。追加を試みるべきだったかもしれませんが(しかし、ざっと見たところそれが見当たりません)。私の現在の考えは、古いサイトのすべてのオートメーションテーブル(空です)を削除し、新しいバックアップを作成してそれを復元することです。
「いいね!」 1
pfaffman
(Jay Pfaffman)
4
そして、discourse_automations_automations が見つからなかったため、失敗しました。 
pfaffman
(Jay Pfaffman)
5
これらを削除しました:
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 に移動しますか?
pfaffman
(Jay Pfaffman)
7
はい。閉じてもらって大丈夫です。これが他の誰かに起こるかどうかは不明なので、役に立つかどうかはわかりません。