Saltar para o conteúdo principal

Identifique o banco de dados afetado

No painel Banco de dados, verifique se o problema afeta o desenvolvimento ou a produção. Compare isso com o ambiente que executa a requisição com falha. Veja Bancos de dados de desenvolvimento e produção. Verifique o Status do Replit para ver se há um incidente correspondente. Não conclua que há uma indisponibilidade apenas por causa de um erro de conexão.

“The endpoint has been disabled”

  1. Verifique se há algum problema de cobrança pendente ou restrição de uso.
  2. Abra o painel Banco de dados e selecione o ambiente afetado.
  3. Se Reativar banco de dados estiver disponível, selecione-o e tente a conexão novamente.
  4. Se o controle não aparecer, verifique se um DATABASE_URL configurado manualmente aponta para um banco de dados diferente do exibido no painel.
Compare as configurações de conexão de forma privada. Não imprima nem compartilhe a string de conexão completa. Não remova uma configuração intencional de banco de dados externo. Se a reativação falhar ou o controle continuar ausente, entre em contato com o Suporte informando o ambiente, o erro e as etapas tentadas. Reinicializações repetidas não substituem a investigação de um banco de dados pausado.

O Preview conecta, mas o aplicativo publicado não

Verifique os secrets de produção e a configuração de banco de dados do aplicativo publicado, especialmente após uma restauração ou migração. Os secrets do workspace, por si sós, não verificam a conexão de produção. Em Publicação, revise Ajustar configurações e os secrets de produção. Se seu aplicativo usa tanto DATABASE_URL quanto variáveis individuais do PostgreSQL, garanta que ambos se refiram ao mesmo banco de dados pretendido. Salve e publique a configuração pretendida e verifique uma leitura antes de testar gravações. Nunca copie credenciais de produção para o código do frontend nem para um repositório público.

Tabelas ou registros ausentes

Primeiro verifique qual banco de dados o aplicativo está lendo. Um banco de dados de desenvolvimento vazio ou um destino de conexão diferente pode parecer perda de dados. Verifique se uma migração recente alterou nomes de tabelas ou o esquema. Publicar o código do aplicativo não significa que os registros de desenvolvimento foram copiados para a produção. Não execute uma redefinição, não remova tabelas nem copie dados de desenvolvimento sobre a produção como etapa de diagnóstico.

Objetos de banco de dados não compatíveis

O Replit usa o drizzle-kit, a ferramenta de migração do Drizzle ORM, para gerenciar seus bancos de dados em dois momentos:
  • Em desenvolvimento, o Agent atualiza o arquivo de esquema do Drizzle e executa o drizzle-kit para aplicá-lo ao seu banco de dados de desenvolvimento.
  • Ao publicar, o Replit compara seu banco de dados de desenvolvimento com seu banco de dados de produção e gera o SQL necessário para atualizar a produção. Ele compara os próprios bancos de dados, não o seu arquivo de esquema.
O drizzle-kit só funciona com o que um esquema do Drizzle consegue descrever: tabelas, colunas, índices, restrições, enums, sequências, views e políticas de segurança em nível de linha.

Não compatíveis

Esses objetos não fazem parte de um esquema do Drizzle, portanto o drizzle-kit não consegue compará-los nem criá-los em desenvolvimento, e a publicação não os copia para a produção:
  • Domínios, tipos personalizados criados com CREATE DOMAIN.
  • Funções, procedimentos e gatilhos (triggers).
  • Permissões (grants), permissões de tabela concedidas com GRANT.

Suporte limitado: roles

O Drizzle pode declarar roles, mas o suporte a elas é limitado. Por isso, atualmente a publicação não cria, altera nem remove roles.

Objetos criados com SQL

Você pode criar qualquer um dos objetos não compatíveis acima manualmente pelo console SQL, ou o Agent também pode executar SQL diretamente no seu banco de dados de desenvolvimento. Eles funcionarão em desenvolvimento e no Preview, mas nenhum objeto não compatível será copiado para a produção na publicação.

O que acontece quando um objeto não é compatível

Se uma tabela, view, valor padrão ou política depender de um desses objetos, a publicação é interrompida na migração do banco de dados com um erro como:
  • function my_function(text) does not exist
  • type "my_domain" does not exist
  • role "app_user" does not exist
O Replit reverte a migração com falha, portanto seu banco de dados de produção não é alterado. Gatilhos e permissões geralmente não causam erro. A publicação é concluída, mas seu aplicativo publicado pode se comportar de forma diferente do Preview. Por exemplo, um gatilho que atualiza um carimbo de data/hora não é executado na produção. Para corrigir qualquer um dos casos, encontre o que está faltando e aplique na produção; depois, publique novamente.

Encontre o que está faltando na produção

O Agent pode executar essa comparação para você, pois tem acesso somente leitura ao seu banco de dados de produção. Veja o prompt em Aplique objetos ausentes na produção. Para verificar por conta própria, execute as mesmas consultas somente leitura nos dois bancos de dados a partir do console SQL e compare os resultados:
Tudo que aparecer apenas em desenvolvimento precisa ser aplicado na produção. Algumas roles são criadas pelo Replit e diferem entre os dois bancos de dados; você só precisa das roles usadas pelas políticas ou permissões do seu aplicativo.

Aplique objetos ausentes na produção

Avançado: estas etapas executam SQL diretamente no seu banco de dados de produção ativo para adicionar objetos que a publicação não transfere, como funções, gatilhos e roles. Executar SQL manualmente é um fluxo não compatível, com o qual só podemos ajudar de forma limitada, portanto recomendamos isso apenas se você se sentir confortável trabalhando com SQL.Revise primeiro suas opções em Recuperação de dados e aplique as alterações quando seu aplicativo tiver pouco tráfego.
  1. Peça ao Agent para comparar seus bancos de dados e escrever um script para tudo o que estiver faltando. Cole este prompt no Agent em seu projeto: O Agent pode ler seu banco de dados de produção, mas não pode alterá-lo, então você executa o script por conta própria nas próximas etapas.
  2. Na ferramenta Banco de dados, selecione o banco de dados de produção, abra Meus dados e ative Enable Editing.
  3. Abra o console SQL e execute o script.
  4. Desative Enable Editing e publique novamente.
A publicação não remove esses objetos, então eles permanecem para as próximas publicações. Mantenha o script no seu projeto e execute-o novamente sempre que adicionar ou alterar um desses objetos em desenvolvimento.

Dados foram excluídos ou sobrescritos

Interrompa gravações evitáveis nos dados afetados enquanto avalia a recuperação. Uma restauração pode substituir dados mais recentes. Preserve o estado atual e entenda o escopo antes de confirmar uma ação de recuperação.
Registre o ambiente afetado, o horário aproximado da última versão boa conhecida com o fuso horário e o que mudou. Verifique as opções de recuperação e o histórico disponível exibidos para esse banco de dados. A retenção e os métodos de recuperação dependem do banco de dados e da configuração; não presuma que um carimbo de data/hora mais antigo seja recuperável. Use as instruções específicas do banco de dados em Recuperação de dados. Não presuma que reverter o código do aplicativo também restaura os dados de produção. Entre em contato com o Suporte se não conseguir identificar um caminho seguro de recuperação. A recuperação não é garantida, e aumentar a retenção não pode recriar um histórico que não foi mantido.

As credenciais podem ter sido expostas

Remova os valores expostos de materiais compartilhados. Para um banco de dados de produção compatível, regenere as credenciais dele na ferramenta Database. Revise antes os requisitos de elegibilidade e o aviso de interrupção. Atualize os clientes externos com a nova string de conexão. Se a ação não estiver disponível, entre em contato com o Suporte. Não exclua o banco de dados para rotacionar credenciais.

Detalhes para o Suporte

Inclua a URL do projeto, o ambiente, o erro sem dados sensíveis, a data/hora e o fuso horário, migrações ou restaurações recentes e as verificações já concluídas. Não inclua credenciais do banco de dados, strings de conexão completas nem registros de clientes. Veja a lista de verificação para o suporte.