Erro Bootstrap: relação "ai_agent_mcp_servers" não existe

O Bootstrap está falhando com o seguinte erro:

PG::UndefinedTable: ERRO:  a relação "ai_agent_mcp_servers" não existe

Então, aqui está um relatório de bug que o ask.discourse.com escreveu, mas primeiro, quero compartilhar essa parte que ele ofereceu:

Decidi deixá-lo como é, e não “direto e conciso”. :rofl: (Eu não rolei no chão, mas realmente, ri em voz alta.)

Parece um relatório credível e provavelmente melhor do que eu teria escrito.

Relatório de bug do ask . . .

Aqui está um relatório de bug conciso que você pode publicar no Meta:

Após a atualização, o bootstrap falha durante `db:migrate` com:

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

A migração com falha é:

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

Parece que esta migração tenta adicionar uma coluna à ai_agent_mcp_servers antes que essa tabela exista.

Parte relevante do log:

== 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

Isso parece ser um problema de ordem de migração no discourse-ai, ou uma migração anterior ausente que deveria criar a ai_agent_mcp_servers.

Ambiente:

  • Instalação oficial do Docker
  • bootstrap falha em bundle exec rake db:migrate
  • plugins mostrados nos logs incluem discourse-citationwizard e discourse-prometheus

Relatório completo / logs:
Erro de bootstrap: relation “ai_agent_mcp_servers” does not exist

Eu precisava saber como soaria. . . .

Claro — aqui está uma versão mais estilo pfaffman:

Isso parece ser um bug de migração do `discourse-ai`.

O Bootstrap falha em:

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

com:

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

Ou seja, essa migração está tentando alterar uma tabela que ainda não foi criada.

Log relevante:

== 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

Parece que ou:

  • a ordem da migração está errada, ou
  • a migração que cria ai_agent_mcp_servers está ausente / não está sendo detectada.

Relatório original e logs completos:
Erro de Bootstrap: relation “ai_agent_mcp_servers” does not exist


Se quiser, posso torná-la ainda mais concisa/desafiadora.

Estes parecem estar na ordem correta…

Você vê alguma evidência nos logs de que o primeiro foi executado?

(A propósito, prefiro seu relatório original escrito por humanos no OP. Ele se mantém nos fatos e não chega a conclusões potencialmente incorretas)

1 curtida

Aha. Aqui está o que aconteceu. Parece que foi porque ambos usamos IA e ela é estúpida e preguiçosa. Uma explicação alternativa é que foi má sorte, mas parece que o Claude (foi o que eu usei) não recebe um carimbo de hora e data (NÃO É LEGAL, Claude), apenas um carimbo de data e depois adiciona um contador, então ambos estávamos trabalhando no mesmo dia.

Aqui estão as últimas migrações que foram executadas:

   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 **********

E o discourse-citationwizard (que suporta https://www.citationwizard.net/, uma ferramenta de citação/referência para acadêmicos) fez uma migração no mesmo dia. Eu achei aquela migração suspeita, mas não imaginei que haveria implicações como essas…

Então é por isso que plugins/discourse-ai/db/migrate/20260319000001_create_ai_agent_mcp_servers.rb não pode ser executado.

E eu tive a má sorte de minha migração ter sido executada primeiro (é mais fácil alterar meu código do que o seu). Estou tentando agora ver se consigo renomear minhas migrações na tabela de migração…

:facepalm:

Temos essa instrução no AI-AGENTS.md:

Mas acho que ele está ignorando :person_shrugging:

@sam, você usou alguma habilidade ou prompt específico para fazer essas migrações do discourse-ai? Se pudermos tentar usar carimbos de hora reais em vez de números suspeitamente específicos que terminam em 0000, isso realmente ajudaria a evitar colisões :thinking:

1 curtida

E eu executei isso diretamente no seu repositório para aproveitar seu conhecimento superior em IA. E agora estou vindicado ao saber que uma equipe de especialistas não consegue fazer melhor do que eu!

Então, sim, Claude, POR QUE NÃO USAR GENERATE MIGRATION!?!?!?

Mudei a versão da migração no banco de dados assim:

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

E renomeei a migração no meu plugin para combinar. Isso resolveu!

Poderia culpar a mim mesmo por não puxar do discourse main com tanta frequência quanto deveria, mas foi no mesmo dia, então mesmo que eu fizesse isso todos os dias, não teria ajudado. Acho que deveria puxar do main e executar as migrações mais uma vez antes de fazer o push, talvez. Mas não vou deixar uma migração como essa acontecer novamente.

Muito obrigado pela sua ajuda. Este foi definitivamente um caso de borda estranho que nunca aconteceria se não estivéssemos ambos usando IA no mesmo dia.

1 curtida