Tabela de erros SQLSTATE
Quando uma query falha, o SuperDB devolve o código SQLSTATE do Postgres. Os mais comuns:
| SQLSTATE | Nome | Causa comum | O que fazer |
|---|---|---|---|
42P01 | undefined_table | A tabela não existe no schema do projeto — ou você está apontando para o projeto errado. | Confira o project passado ao SDK e se a tabela aparece em Database. Se criou agora, recarregue: o cache de schema leva alguns segundos. |
42501 | insufficient_privilege | A role da requisição não tem permissão. Quase sempre é RLS sem política — com RLS ligada e nenhuma policy, tudo é negado (é o comportamento seguro). | Crie a política da tabela para authenticated (e para anon, se for leitura pública). Veja Advisors no dashboard. |
23505 | unique_violation | Valor duplicado em coluna UNIQUE ou chave primária. |
Use upsert em vez de insert: INSERT … ON CONFLICT DO UPDATE. |
23503 | foreign_key_violation | A FK aponta para um registro que não existe (ou você apagou o pai antes do filho). | Insira o pai antes do filho. Para apagar em cascata, declare ON DELETE CASCADE. |
23502 | not_null_violation | Campo NOT NULL recebeu null — comum quando o front envia string vazia. |
Preencha o campo ou dê um DEFAULT à coluna. |
42703 | undefined_column | Coluna inexistente — normalmente erro de digitação ou um select() desatualizado. |
Confira o nome em Database. Lembre que nomes com maiúsculas precisam de aspas no SQL. |
57014 | query_canceled | A query estourou o tempo limite. | Crie índice para as colunas do where/order by, reduza o intervalo e pagine com limit. |
53300 | too_many_connections | Conexões esgotadas — típico de abrir um cliente novo a cada requisição no backend. | Reaproveite uma única instância do cliente. Em serverless, prefira as chamadas HTTP do SDK a conexões diretas ao Postgres. |
28000 | invalid_authorization | Credencial inválida na conexão direta ao banco. | Gere de novo a string de conexão em Settings; se você regenerou as chaves, a anterior morreu. |
3D000 | invalid_catalog_name | Banco/schema inexistente na conexão. | Use o schema do seu projeto (proj_<slug>) e confirme o slug. |
Vendo o erro no SQL Editor
O caminho mais rápido é reproduzir a query em SQL Editor, no dashboard: o Postgres devolve o código, a mensagem e a posição exata. Para checar se o problema é RLS, compare o resultado da mesma query com e sem filtro de usuário — se só falha autenticado, é política.
sql — ver as políticas de uma tabela
SELECT policyname, cmd, roles
FROM pg_policies
WHERE schemaname = 'proj_<slug>' AND tablename = 'minha_tabela';
Nenhuma linha + RLS ligada = tudo negado. É a explicação da maioria dos
42501.
Essa página ajudou?