Bootstrap エラー: リレーション "ai_agent_mcp_servers" が存在しません

ブートストラップが以下のエラーで失敗しています。

PG::UndefinedTable: エラー: 関係 "ai_agent_mcp_servers" が存在しません

さて、ask.discourse.com が書いたバグレポートがやってきましたが、まず、それが提示したこの部分を紹介させてください。

私はこれをそのままにし、「簡潔で率直」にはしないことにしました。:rofl:(床に転げ落ちたわけではありませんが、本当に大声で笑いました。)

これは信頼性の高いレポートであり、私が書くよりもずっと良いもののようです。

ask からのバグレポート

メタに投稿できる簡潔なバグレポートは以下の通りです。

更新後、`db:migrate` 中に bootstrap が失敗します:

```text
PG::UndefinedTable: ERROR:  relation "ai_agent_mcp_servers" does not exist

失敗したマイグレーションは以下の通りです。

/plugins/discourse-ai/db/migrate/20260319070000_add_selected_tool_names_to_ai_agent_mcp_servers.rb

このマイグレーションは、ai_agent_mcp_servers テーブルが存在する前に、そのテーブルに列を追加しようとしているようです。

ログの関連部分:

== 20260319070000 AddSelectedToolNamesToAiAgentMcpServers: migrating ==========
PG::UndefinedTable: ERROR:  relation "ai_agent_mcp_servers" does not exist
...
/var/www/discourse/plugins/discourse-ai/db/migrate/20260319070000_add_selected_tool_names_to_ai_agent_mcp_servers.rb:5

これは discourse-ai 内のマイグレーション順序の問題か、ai_agent_mcp_servers を作成すべき以前のマイグレーションが不足しているように見えます。

環境:

  • 公式 Docker インストール
  • bundle exec rake db:migrate で bootstrap が失敗
  • ログに表示されるプラグインには discourse-citationwizarddiscourse-prometheus が含まれる

完全なレポート / ログ:
Bootstrap error: relation “ai_agent_mcp_servers” does not exist

自分がどのように聞こえるか知る必要がありました。

はい、より pfaffman 風 のバージョンはこちらです:

これは `discourse-ai` のマイグレーションバグのようです。

Bootstrap が以下の場所で失敗しています:

```text
/plugins/discourse-ai/db/migrate/20260319070000_add_selected_tool_names_to_ai_agent_mcp_servers.rb

エラー内容:

PG::UndefinedTable: ERROR:  relation "ai_agent_mcp_servers" does not exist

つまり、このマイグレーションは存在しないテーブルを変更しようとしています。

関連ログ:

== 20260319070000 AddSelectedToolNamesToAiAgentMcpServers: migrating ==========
PG::UndefinedTable: ERROR:  relation "ai_agent_mcp_servers" does not exist
...
/var/www/discourse/plugins/discourse-ai/db/migrate/20260319070000_add_selected_tool_names_to_ai_agent_mcp_servers.rb:5

原因は以下のいずれかのようです:

  • マイグレーションの順序が間違っている
  • ai_agent_mcp_servers を作成するマイグレーションが欠落している、または認識されていない

元の報告と完全なログ:
Bootstrap error: relation “ai_agent_mcp_servers” does not exist


必要であれば、さらに簡潔で皮肉めいた表現にすることもできます。

これらは正しい順序にあるようです…

ログに最初のものが実行されたという証拠はありますか?

(参考までに、元の OP の人間による報告の方が好みです。事実に基づいており、誤った可能性のある結論を導き出していないためです)

「いいね!」 2

なるほど、こうなりましたね。どうやら、私たちがどちらも AI を使ったせいで、AI が無能で怠慢だったのが原因のようです。別の説明として単なる不運かもしれませんが、私が使った Claude はタイムスタンプ(これはひどいですね、Claude)を受け取らず、日付スタンプの後にカウンターを追加するだけなので、私たちが同じ日に作業していたことがわかります。

最後に実行されたマイグレーションは以下の通りです:

   up     20260316000001  Create discourse citationwizard openalex api keys
   up     20260316000002  Create discourse citationwizard api key daily snapshots
   up     20260316071735  Rename automation api key scope resource
   up     20260316071736  Rename ai api key scope resource
   up     20260316071737  Rename data explorer api key scope resource
   up     20260319000000  ********** NO FILE **********
   up     20260319000001  Create discourse citationwizard user lookup events
   up     20260319000002  Create discourse citationwizard citation wizard sessions
   up     20260319033623  ********** NO FILE **********
   up     20260319055039  ********** NO FILE **********

discourse-citationwizard(学術研究者向けの引用・参考文献ツール https://www.citationwizard.net/ をサポートしています)も同じ日にマイグレーションを作成しました。そのマイグレーションは怪しいと感じていましたが、このような影響が出るとは思いませんでした。

そのため、plugins/discourse-ai/db/migrate/20260319000001_create_ai_agent_mcp_servers.rb が実行できないのです。

そして、私のマイグレーションが先に実行されてしまったという不運がありました(あなたのコードよりも私のコードを変更する方が簡単です)。今は、マイグレーションテーブル内で自分のマイグレーション名を変更できるかどうか確認しようとしています。

:facepalm:

AI-AGENTS.md には以下の指示があります:

でも、おそらくこれを無視しているのでしょう :person_shrugging:

@sam さん、これらの Discourse AI の移行を行う際に特定のスキルやプロンプトを使用しましたか?もし、0000 で終わる疑わしくも特定の数字ではなく、実際のタイムスタンプを使えるなら、衝突を避けるのに本当に役立つと思います :thinking:

「いいね!」 1

そして、あなたの優れたAIの知識を活用するために、あなたのリポジトリからこれを実行しました。その結果、専門家チームでも私以上のことはできないことが証明され、胸を撫で下ろしています!

さて、Claude、なぜ「generate migration」を使わないんですか!?!?!?

私はデータベース内のマイグレーションバージョンを以下のように変更しました:

UPDATE schema_migrations 
SET version   = '20260319001231' 
WHERE version = '20260319000001';

そして、プラグイン内のマイグレーションファイル名もそれに合わせて変更しました。これで問題が解決しました!

自分のせいにして、Discourseのmainブランチを普段より頻繁にpullしていなかったことを責めたいところですが、同じ日だったため、毎日pullしていたとしても解決しなかったでしょう。たぶん、pushする前にmainからpullしてマイグレーションをもう一度実行すべきなのかもしれません。でも、このようなマイグレーションの問題が二度と起きないようにします。

ご支援いただき、本当にありがとうございました。これは確かに奇妙なエッジケースで、私たちが同じ日にAIを使っていなければ、決して発生しなかったでしょう。

「いいね!」 2