Pular para o conteúdo
Início
Docs/Banco de dados

Banco de dados

O PocketCode traz um PostgreSQL 18.2 de verdade que roda dentro do app em celulares ARM de 64 bits, sem servidor e sem conta para configurar. Ao redor dele: um console SQL com assistente de IA no editor, um visualizador de dados editável, backups e restauração, planos de execução, diagramas ER e um designer de esquema. O mesmo módulo também abre seus servidores PostgreSQL e MySQL e seus bancos Neon, Supabase, PlanetScale, Turso e Cloudflare D1. MongoDB, Redis, Firestore, monitoramento, segurança, dashboards, importação e compartilhamento estão em Ferramentas de banco de dados.

O que é e como abrir

O Database é um gerenciador em tela cheia que abre por cima do app; não é uma das cinco páginas do pager. Ele tem a própria pilha de navegação: as telas do núcleo estão nesta página e o resto está em Ferramentas de banco de dados.

Quatro formas de abrir

De ondeComo
Painel FerramentasToque em Ferramentas na barra inferior e depois no bloco Banco de dados em Ferramentas de desenvolvimento. Você chega à tela inicial.
Paleta de comandosExecute Gerenciador de Banco de Dados (“Conecte e consulte seus bancos de dados”).
HomeA ação rápida Banco de dados ou o widget de bancos de dados.
Backend ManagerAbrir no Database no projeto de um provedor conectado abre direto o projeto, as tabelas ou o console SQL.

A tela inicial

A raiz da navegação do módulo.

O que você pode fazer

  • Minhas conexões abre a lista de conexões.
  • O cartão Banco local mostra Running ou Stopped. Toque nele para instalar o motor (só na primeira vez, com barra de progresso), iniciá-lo e abrir suas tabelas.
  • Iniciar / Parar no cartão depois que o app verifica o motor; Administrar (a tela do motor) e Usar no projeto (a URL de conexão) só enquanto ele está rodando.
  • Monitoramento e Schema Designer (não precisa de conexão).

O que você não pode fazer, e por quê

  • Em um celular cuja arquitetura a compilação não tem motor, tocar no cartão não instala nada e mostra “PostgreSQL não vem nesta compilação para o teu dispositivo.” O resto do módulo continua funcionando.Dispositivo
  • Administrar e Usar no projeto não existem enquanto o motor está parado: não haveria nada para mostrar.De propósito
Database Manager start screen on a tablet: My Connections, the Local Database card stopped with only Start, Monitoring and Schema Designer
Tela inicial em um tablet. Com o motor parado só aparece Iniciar: Administrar e Usar no projeto aparecem quando ele roda

Como se mover

  • Voltar é o gesto de voltar do Android. Ele refaz seu caminho uma tela por vez e, na tela inicial, fecha o módulo. Não há setas de voltar no cabeçalho.
  • O título é um seletor. Toque nele (no ▾ ao lado) para abrir Trocar banco de dados: com o motor local, seus bancos, Novo banco de dados e Motor; com qualquer outra conexão, só o banco ativo. Abaixo, Conexões (a ativa primeiro, marcada como Ativa) e Todas as conexões. Ele não aparece na tela inicial, na lista e no formulário de conexões, na lista de projetos nem no schema designer.
  • O ícone de grade abre Ferramentas: 25 ferramentas em seis seções (Explorar, Consultar, Desenhar, Dados, Servidor, Segurança), uma caixa Procurar ferramentas e uma linha Frequentes que aparece depois que você usa uma ferramenta três vezes (no máximo quatro). Só aparece o que faz sentido para a conexão aberta.
  • O subtítulo diz qual banco está aberto e se o motor está rodando, por exemplo postgres · ● Engine running.
  • O bloqueio biométrico, se você o ativou em Segurança, pede sua impressão digital, rosto ou o PIN / padrão do dispositivo quando o módulo abre.
Database Manager start screen with My Connections, the Local Database card running, Monitoring and Schema Designer
Tela inicial — conexões, o motor local e dois atalhos
Tools sheet with Frequent, Explore and Query sections
Ferramentas — uma folha, agrupada pelo que você quer fazer
Switch database sheet with the postgres database, New Database, Engine and the list of connections
Toque no título para trocar de banco ou de conexão

Celular, horizontal e tablet

Celular na verticalUma tela por vez. O console alterna entre Editor e Resultados.
Celular na horizontalUma barra estreita à esquerda substitui o cabeçalho (Ferramentas e o seletor de conexão). O console mostra editor e resultados lado a lado, com um divisor que você pode arrastar.
Tablet na verticalEditor em cima e resultados embaixo, com predefinições de 30 / 50 / 70 %. O painel lateral abre como gaveta.
Tablet na horizontalUma barra Ferramentas permanente que se recolhe em uma faixa estreita, um painel lateral com suas conexões e tabelas (ele fixa a partir de 952 dp de largura), um painel de detalhe da linha ao lado da grade, uma faixa de abas e atalhos de teclado no console.

Mapa de telas

Uma linha para cada tela, painel e aba do módulo que esta página cobre.

TelaComo chegar láO que você pode fazer
Gerenciador de Banco de Dados (tela inicial)Ferramentas → Banco de dados, a paleta, a Home ou Abrir no DatabaseAbrir Minhas conexões, iniciar ou parar o motor local, Administrar, Usar no projeto, abrir Monitoramento ou Schema Designer.
Bancos de dados (lista de conexões)Minhas conexões, ou Todas as conexões no seletor do títuloVer conexões favoritas, locais, na nuvem e personalizadas; abrir, editar, duplicar, testar, favoritar ou excluir uma; adicionar um servidor com +.
Nova conexão / Editar conexão+, o ⋮ de um cartão ou Usar uma conexão direta em um projeto SupabaseAnalisar uma string de conexão, preencher os detalhes, configurar TLS e um túnel SSH, Testar conexão, Salvar.
TabelasToque em uma conexão ou Ferramentas → TabelasBuscar tabelas e views, abrir dados ou estrutura, Criar tabela, importar, exportar.
Dados (visualizador)Toque em uma tabela ou viewFiltrar, Ordem, Colunas, Views, editar células, selecionar linhas, Copiar como, Exportar, Inserir linha, adicionar uma coluna.
Detalhes da linhaToque em uma linhaLer e editar uma linha como formulário, Copiar JSON.
Detalhes da tabela⋮ → Detalhes da tabela ou Estrutura em uma tabelaColunas, índices, chaves, triggers e DDL; Renomear, Truncar, Apagar tabela.
Criar tabelaCriar tabela ou Ferramentas → Nova tabelaDefinir uma tabela com 15 tipos de coluna e as flags PK, AI, NN, UQ.
Console SQLFerramentas → Consola SQLEscrever e executar SQL, perguntar à IA, usar parâmetros e abas, copiar ou exportar resultados, Explain.
Plano de execuçãoFerramentas → Plano de execução ou ExplainVer o plano como árvore, medir com Analisar a sério, receber sugestões de índice e uma explicação da IA.
Árvore de schemaFerramentas → Árvore do esquemaNavegar por banco → tabelas → colunas e índices.
Diagrama ERFerramentas → Diagrama ERDar zoom com pinça e arrastar um diagrama de tabelas e relações, Exportar diagrama como PNG, Editar como desenho.
Diff de schemaFerramentas → Comparar esquemas (Pro)Salvar snapshot, Executar diff, Gerar migração.
Backup e restauraçãoFerramentas → Cópias de segurançaFazer backup, restaurar, importar e exportar dumps do PostgreSQL local; agendar backups (Pro).
MotorAdministrar, Motor no seletor do título ou Ferramentas → Configuração do motor, Extensões, Registo do servidorSaúde, Extensões, Registro e Ajustes do PostgreSQL local.
Schema Designer e o assistente de novo esquemaTela inicial ou Ferramentas → Desenhador de esquemaListar, criar (assistente de 3 passos, 6 modelos), duplicar e excluir projetos de esquema.
Editor de esquema, editor de tabela e Exportar schemaAbra um projeto de esquemaDesenhar tabelas e relações, editar colunas, exportar em 7 formatos, Aplicar a … no console.
Painel e barra FerramentasO ícone de grade; permanente em um tablet na horizontalBuscar e abrir qualquer uma das 25 ferramentas.
Trocar banco de dados e o painel lateralToque no título; o painel em um tabletTrocar de banco ou de conexão, Novo banco de dados, Motor, buscar conexões e tabelas.
Usar no projetoUsar no projeto no cartão do motorVer a URL de conexão, Revelar, Copiar URL, Escrever .env no projeto aberto.
Mais telas do móduloPainel Ferramentas, listas de projetos, Abrir no DatabaseProjetos de contas de provedores, Import Preview, Query History, Saved Queries, Charts, Dashboards, Monitoring, Test data, Security, Audit Log, Sharing, Redis, Firestore e o diff de deploy do PlanetScale: tudo em Ferramentas de banco de dados.
As telas da última linha, e as ferramentas do painel Ferramentas que não estão nesta página, estão documentadas em Ferramentas de banco de dados.

O que você pode conectar

O módulo abre 13 tipos de banco de dados. Seus próprios servidores PostgreSQL e MySQL são conexões que você salva; as contas de provedores vêm dos serviços que você conecta em Ajustes → Integrações → Serviços conectados (ou pelo Backend Manager) e precisam de rede. O Firestore usa seu projeto do Firebase.

MotorComo conectaO que você pode fazer
PostgreSQL (local)O motor dentro do app: PostgreSQL 18.2 em 127.0.0.1:5433, sem conta. Somente celulares ARM de 64 bits.Tudo o que está nesta página, mais as configurações do motor, extensões, o log do servidor, backups com restauração e Usar no projeto.
PostgreSQL (seu servidor)Direto para o seu host, com TLS e túnel SSH opcionais.Tabelas, dados, console SQL, planos, criar tabelas, diagrama ER, ferramentas de esquema.
MySQL / MariaDBO cliente MySQL próprio do PocketCode, com TLS e túnel SSH opcionais.O mesmo, exceto que não lista índices, chaves estrangeiras nem triggers e seus planos são estimativas.
NeonSua conta Neon. O SQL roda por JDBC quando o app consegue ler a conexão do projeto na sua conta e, caso contrário, pela API HTTP do Neon.Console SQL com a proteção Somente leitura, tabelas, dados, planos, diagrama ER.
SupabaseSua conta Supabase; o SQL passa pela API dele em todos os schemas. Usar uma conexão direta adiciona uma conexão PostgreSQL de verdade quando você informa a senha.O mesmo do Neon.
PlanetScaleSua conta lista bancos e branches; uma branch abre como conexão MySQL com verificação completa de certificado.Como o MySQL / MariaDB. O esquema da branch, a verificação de esquema e o diff de deploy request estão em Ferramentas de banco de dados.
TursoSua conta Turso; o SQL passa pela API HTTP do Turso.Console SQL, tabelas, dados, diagrama ER (planos do SQLite não têm custos).
Cloudflare D1Sua conta Cloudflare; o SQL passa pela API do D1, como no Turso.O mesmo do Turso.
MongoDB AtlasSua conta Atlas lista os clusters; você digita o usuário e a senha do banco.Coleções e contagens, em Ferramentas de banco de dados. Sem console SQL.
Upstash RedisSua conta Upstash; ao abrir um banco, ele conecta como um banco Redis de verdade.Ferramentas Redis, em Ferramentas de banco de dados. Sem console SQL.
MongoDBO cliente MongoDB próprio do PocketCode, com autenticação SCRAM e TLS.Coleções e contagens, em Ferramentas de banco de dados.
RedisO cliente Redis próprio do PocketCode, com TLS.Navegador de chaves, CLI e monitor, em Ferramentas de banco de dados.
Cloud FirestoreSeu projeto do Firebase em Ajustes → Integrações, ou a sessão do Google do Backend Manager.Navegar e consultar, em Ferramentas de banco de dados.
O PocketCode não tem servidor próprio no meio: o app fala direto com o motor local, com seus hosts ou com a API do provedor. São 13 tipos de conexão, que o site conta como 12 motores porque o motor local e seus próprios servidores PostgreSQL são o mesmo motor. Os PostgreSQL, MySQL e Redis gerenciados da DigitalOcean abrem em Bancos gerenciados no Backend Manager, como conexões PostgreSQL, MySQL ou Redis comuns mantidas na memória (sem formulário, e elas não contam para o limite de conexões); os outros motores dela não são abertos por ali. MongoDB, Redis, Firestore, monitoramento, segurança, dashboards e o resto estão em Ferramentas de banco de dados.

PostgreSQL no seu celular

O motor é o PostgreSQL 18.2 compilado para Android e empacotado dentro do app, para celulares ARM de 64 bits (arm64-v8a). Ele escuta só no celular (127.0.0.1, porta 5433, usuário postgres) e, por TCP, sempre pede senha (SCRAM-SHA-256); a senha é aleatória, fica guardada criptografada e o motor se recusa a iniciar sem ela. Nada exige root, Termux nem rede.

Iniciar

A partir da tela inicial.

  1. 1Toque em Banco local. Na primeira vez, o app descompacta o motor e cria o cluster de bancos de dados, depois inicia o servidor e abre a lista de tabelas.
  2. 2Para parar, toque em Parar no cartão do motor. Para iniciar de novo, Iniciar.
  3. 3As telas que precisam do motor (Tabelas, Dados, console SQL, Plano de execução, Árvore do esquema, diagrama ER e outras) mostram Motor parado com um botão Iniciar quando ele está desligado: “Inicie o motor PostgreSQL local para trabalhar com as tabelas.”
A primeira inicialização descompacta um pacote de cerca de 36 MB e executa initdb no celular para criar o cluster (com até 10 minutos de tolerância); isso acontece uma vez só. O app não mantém o motor vivo em segundo plano: quando você sai, ele pede ao PostgreSQL que grave um checkpoint, e o Android pode parar o processo depois. Os passos da primeira execução (“Preparing…”, “Extracting…”, “Verifying…”) e os rótulos Running / Stopped ficam em inglês em todos os idiomas.

O que você não pode fazer, e por quê

  • O motor não vive em segundo plano: o Android pode matar o processo sem aviso, então o cartão pode mostrar Stopped quando você volta e você toca em Iniciar. O Google Play exige que um serviço em primeiro plano tenha um tipo declarado e uma finalidade visível, e “manter um PostgreSQL vivo” não se encaixa em nenhum.Google Play
  • O motor só vem para arm64-v8a. Em x86 (emuladores, Chromebooks x86) ele não está disponível.Dispositivo

A tela do motor

Abra com Administrar no cartão do motor ou Motor no seletor do título. Configuração do motor, Extensões e Registo do servidor em Ferramentas abrem a mesma tela em uma aba (Configuração do motor abre Saúde, não Ajustes). Ela tem quatro abas e um botão Atualizar. Com o motor parado, cada aba diz “O motor está parado. Inicie-o para ver o estado.”

Landscape tablet: connection list on the left, Engine Health tab with PostgreSQL 18.2, sessions and slowest statements in the middle, and the Tools rail on the right
Tablet na horizontal: suas conexões à esquerda, Motor → Saúde no meio, a barra Ferramentas à direita

Saúde

O estado do servidor em execução.

O que você pode fazer

  • Ler Versão, Em execução há, Tamanho dos dados, Sessões abertas, Commits, Rollbacks, Acertos de cache, Checkpoints e Deadlocks.
  • Ver o tamanho de cada banco em Bancos de dados e remover um com Excluir banco (após uma confirmação: “Tudo o que está dentro é apagado e não há como desfazer.”).
  • Acompanhar Sessões ativas e encerrar uma com Cancelar consulta ou Encerrar sessão.
  • Ver Comandos mais lentos (chamadas, tempo médio, linhas) a partir de pg_stat_statements. Se ela não estiver ativa, Ativar executa CREATE EXTENSION pg_stat_statements; para medir, você também precisa de Estatísticas de comandos ligado em Ajustes e uma reinicialização.

O que você não pode fazer, e por quê

  • Excluir banco nunca é oferecido para postgres (“O banco “postgres” é o banco de manutenção do motor e não pode ser excluído.”) nem para o banco ao qual você está conectado.De propósito

Extensões

As extensões que este pacote do PostgreSQL traz: 17 no total (btree_gin, btree_gist, citext, dblink, fuzzystrmatch, hstore, pageinspect, pg_freespacemap, pg_stat_statements, pg_trgm, pgcrypto, pgrowlocks, plpgsql, postgres_fdw, tablefunc, unaccent, uuid-ossp).

O que você pode fazer

  • Ver As mais úteis (pg_trgm, pgcrypto, uuid-ossp, citext, hstore, pg_stat_statements) e Todas as disponíveis, cada uma com nome, versão e descrição.
  • Ligar ou desligar uma extensão com o seu interruptor: isso executa CREATE EXTENSION ou DROP EXTENSION no banco aberto.

O que você não pode fazer, e por quê

  • Você não pode instalar outras extensões: só as 17 do pacote, e o nome é conferido com essa lista antes de executar.De propósito

Registro

O log do próprio servidor.

O que você pode fazer

  • Ler os últimos 256 KiB do log do servidor, filtrando por Tudo, LOG, WARNING, ERROR ou FATAL.
  • Copiar ou Compartilhar como texto.

O que você não pode fazer, e por quê

—

Ajustes

Quanta memória o motor usa e quão seguras são suas gravações. As alterações valem ao salvar: o motor reinicia.

O que você pode fazer

  • Escolher o Perfil de memória: Leve, Equilibrado ou Potente. A linha abaixo diz o que ele define, e RAM detectada mostra o que o celular informa.
  • Ligar ou desligar Durabilidade e Estatísticas de comandos (“Registra cada comando para que Saúde possa mostrar os mais lentos. Requer reiniciar.”).
  • Copiar URL copia a URL de conexão completa, senha incluída.
  • Salvar (só habilitado com alterações; salva e reinicia: “Definições aplicadas: o motor foi reiniciado.”) e Reiniciar motor.

O que você não pode fazer, e por quê

  • A porta é fixa em 5433 e o motor escuta só em 127.0.0.1: ele nunca fica exposto à rede.De propósito
  • Potente só é oferecido quando o Android informa 8 GiB de RAM ou mais.Dispositivo
Engine Extensions tab with pg_trgm switched on
Motor → Extensões: ative o que o PostgreSQL traz
Engine Settings tab with Light, Balanced and Powerful profiles and the Durability switch
Motor → Ajustes: perfil de memória e durabilidade

Perfis de memória

PerfilO que ajusta
Leve16 MB de memória compartilhada · 2 MB por ordenação · até 10 conexões · 128 MB de effective_cache_size · 2 workers. Padrão com menos de 6 GiB de RAM.
Equilibrado64 MB de memória compartilhada · 4 MB por ordenação · até 20 conexões · 512 MB de effective_cache_size · 3 workers. Padrão a partir de 6 GiB.
Potente128 MB de memória compartilhada · 8 MB por ordenação · até 30 conexões · 1 GB de effective_cache_size · 4 workers. Exige 8 GiB ou mais.

A RAM é o total que o Android informa (ActivityManager.totalMem), contado em GiB: um celular vendido como “8 GB” pode informar menos e não oferecer Potente. Um perfil salvo que o celular já não consegue sustentar é rebaixado. Sempre: sem consultas paralelas (max_parallel_workers = 0) e fuso horário UTC.

Durabilidade

  • On (padrão): full_page_writes = on e synchronous_commit = off. Se o celular perder energia ou o Android matar o app, o PostgreSQL se recupera sozinho, mas os últimos milissegundos de transações confirmadas podem se perder; nada fica corrompido.
  • Off: mais rápido, mas com full_page_writes = off: uma queda durante a gravação pode deixar o banco corrompido, sem volta. A tela avisa em âmbar. Mantenha ligado, a menos que os dados possam ser regenerados.

Mais de um banco de dados

O motor local pode conter vários bancos de dados.

O que você pode fazer

  • Toque no título e escolha Novo banco de dados; digite um Nome do banco de dados e toque em Criar. Os nomes mantêm letras, números e _. O app troca para o novo banco na hora.
  • Cada banco aparece em Bancos de dados no mesmo seletor; toque em um para trocar. Extensões, tabelas e consultas valem para o que está aberto.

O que você não pode fazer, e por quê

  • No Free o motor guarda um banco só (postgres), então Novo banco de dados abre direto o muro do Pro; o diálogo e a ferramenta têm um selo Pro.Pro
  • Só o motor local troca de banco; toda outra conexão tem um fixo.De propósito

Usar pelo seu código

Usar no projeto no cartão do motor (com o motor rodando) abre o painel Usar no projeto.

  1. 1O painel mostra a URL de conexão com a senha oculta: postgresql://postgres:***@127.0.0.1:5433/<database>.
  2. 2Revelar mostra a senha e Ocultar a oculta de novo. Copiar URL copia o que o painel mostra, então copia a versão oculta até você tocar em Revelar. O Copiar URL da aba Ajustes do motor sempre copia a URL completa.
  3. 3Escrever .env no projeto aberto pergunta “Escrever .env?” e, em Escrever, coloca DATABASE_URL no .env do projeto: ele substitui o primeiro DATABASE_URL existente (duplicatas são removidas, um comentado é ignorado) e mantém o resto do arquivo. Se o arquivo ou uma pasta .git existir, .env é adicionado ao .gitignore.

O que você não pode fazer, e por quê

  • Nem Revelar nem Copiar URL pedem sua impressão digital, mesmo com o bloqueio biométrico ligado.Ainda não
  • Com o motor parado não há URL (“O motor local está parado, então não há conexão para entregar. Inicie-o e volte.”) e, sem projeto aberto, não há onde escrever (“Nenhum projeto está aberto, então não há onde escrever um .env.”).De propósito
  • Não há psql nem pgpass: a senha só sai do motor por esta URL ou pelas variáveis de ambiente.De propósito

Terminal e Node

Com o motor em execução, o terminal local e os scripts Node recebem DATABASE_URL, PGHOST, PGPORT, PGUSER, PGPASSWORD e PGDATABASE no ambiente. Com npm i pg em um projeto, new Client() conecta sem nenhuma configuração. O terminal também tem um snippet pronto, Local PostgreSQL (Node).

As variáveis são lidas quando uma sessão começa: abra uma nova sessão depois de iniciar o motor. Sessões SSH não as recebem. O terminal não tem psql nem pg_dump; os backups são feitos pela ferramenta Backups.

Conexões

Minhas conexões (com o título Bancos de dados) lista tudo o que o módulo pode abrir. Abrir e salvar conexões funciona igual para todos os tipos; o que cada tipo faz depois de aberto está na tabela em “Tipos de conexão”.

A lista de conexões

Abra em Minhas conexões na tela inicial ou em Todas as conexões no seletor do título.

O que você pode fazer

  • Veja suas conexões em seções: Favoritos, Bancos locais, Bancos em nuvem e Conexões personalizadas, cada uma com uma contagem. Cada cartão mostra o logotipo do motor, o nome, o host parcialmente oculto (••.••••.empresa.com:5432), o ambiente em texto (PROD em vermelho quando o grupo ou o rótulo de cor começa com PROD) e um ponto de status.
  • Toque em um cartão para abri-lo: o motor local e seus servidores abrem suas tabelas, as contas de provedores abrem seus projetos, Redis e Firestore abrem seus próprios navegadores.
  • Toque em + (Nova conexão) para adicionar um servidor.
  • Use o ⋮ de um cartão: Editar conexão, Duplicar (acrescenta “ (Copy)” ao nome), Testar conexão, Adicionar aos favoritos / Remover dos favoritos e Excluir (“Excluir a conexão "…"? Isso não pode ser desfeito.”). Excluir também apaga a credencial guardada e, para uma branch do PlanetScale aberta como MySQL, revoga a senha dela na sua conta do PlanetScale.
  • Manter suas conexões na sua conta do PocketCode. Com Ativar sincronização ligado no diálogo Sincronização de ajustes das Configurações (Cloud Sync, um recurso Pro) e Conexões (SSH/DB) marcada, salvar ou editar um dos seus servidores, abrir uma branch do PlanetScale como MySQL e excluir uma conexão também atualizam a sua conta. Só vão metadados: nome, host, porta, motor e rótulo de grupo; nunca o usuário, a senha, os ajustes de TLS nem nada mais que o app guarda à parte. Com o Cloud Sync desligado, ou essa caixa desmarcada, nada é enviado. Conexões sem host também não são enviadas.

O que você não pode fazer, e por quê

  • A conexão do motor local não pode ser editada nem excluída: “A conexão com o PostgreSQL local é gerenciada pelo app: não é possível alterar host, porta nem usuário, nem excluí-la.” Ela oferece Duplicar, Testar conexão e favoritos.De propósito
  • No Free, salvar (ou duplicar e salvar) uma segunda conexão sua abre o muro do Pro. O motor local, as contas de provedores e as conexões em memória de Abrir no Database (Upstash, DigitalOcean) não contam. Abrir uma branch do PlanetScale, e Abrir… e Colar em Compartilhamento, obedecem ao mesmo limite.Pro
Connections list with Local PostgreSQL first and cloud databases below
Conexões — primeiro o motor local, depois suas contas na nuvem

New Connection e Edit Connection

O formulário para servidores e para tipos de provedor que você quer preencher à mão. Ele abre no tipo Neon PostgreSQL.

  1. 1Em Minhas conexões, toque em + (Nova conexão).
  2. 2Cole uma URL em String de conexão e toque em Analisar string de conexão. Ele entende postgres://, postgresql://, mysql://, mariadb://, libsql://, turso://, redis://, rediss://, mongodb:// e mongodb+srv://, com ou sem o prefixo jdbc:; decodifica escapes como %40, hosts IPv6 e listas de réplicas do MongoDB. rediss, mongodb+srv e libsql ligam o TLS.
  3. 3Ou preencha Nome da conexão, Tipo de banco, Host, Porta, Banco de dados (no Redis, o índice do SELECT), Usuário e Senha.
  4. 4Em Aparência, escolha uma Cor (None, Production, Staging, Development, Testing, Custom, Local) e um Grupo.
  5. 5Configure SSL / TLS e, se precisar, Túnel SSH (ambos abaixo).
  6. 6Toque em Testar conexão. O resultado fica na tela em Último teste, com o Resposta do servidor e, se funcionou, a Latência.
  7. 7Toque em Salvar. A senha vai para o armazenamento criptografado do Android e o arquivo da conexão nunca a guarda. Ao editar uma conexão, deixe Senha vazio para manter a salva.

O que você pode fazer

  • O seletor Tipo de banco oferece PostgreSQL (Local) (só onde o motor é distribuído), PostgreSQL, MySQL / MariaDB, Neon PostgreSQL, Supabase, PlanetScale MySQL, MongoDB Atlas, Turso SQLite, Upstash Redis, Redis e MongoDB. Cloudflare D1 e Cloud Firestore não estão no seletor: eles chegam pela conta deles.
  • Testar conexão testa de verdade: o motor local com SELECT version(); PostgreSQL, MySQL e PlanetScale com a versão e a latência (“Ligado — …”); Neon e Supabase listando projetos (“Ligado — N projetos”); MongoDB e Redis com um ping real, incluindo TLS e autenticação.

O que você não pode fazer, e por quê

  • Turso, Upstash, Atlas e D1 não podem ser testados pelo formulário: “… ainda não pode ser testado a partir da app (sem controlador).”Ainda não
  • No Free, Salvar em uma segunda conexão abre o muro do Pro.Pro

TLS

Usar TLS fica em SSL / TLS. No PostgreSQL e no MySQL / MariaDB, depois de ligado, o formulário oferece dois modos e começa em Verificar servidor.

O que você pode fazer

  • Verificar servidor: o certificado do servidor é conferido com as autoridades em que seu celular confia, então um certificado de uma CA pública funciona sem arquivo. Se seu servidor usa um certificado próprio, escolha a CA dele com Escolher certificado CA… (o arquivo é copiado para o armazenamento privado do app).
  • Verificar hostname (ligado por padrão) também confere o nome do host; desligado, só a CA é verificada.
  • Apenas cifrar (sem verificar): criptografa o tráfego sem verificar quem responde. Um aviso vermelho diz que alguém na mesma rede poderia se passar pelo seu servidor; use só para um certificado autoassinado.

O que você não pode fazer, e por quê

  • O formulário não oferece Disable, Allow nem Prefer. Uma conexão salva com um modo antigo mostra esse modo como um chip extra até você escolher outro.De propósito
  • No Redis e no MongoDB, Usar TLS sempre valida o certificado: não há a opção Encrypt-only.De propósito

Túnel SSH

Túnel SSH → Usar túnel SSH chega a um banco por um jump host: Host SSH, Porta SSH, Usuário SSH e uma Senha ou uma Chave privada (Escolher chave privada…).

O que você pode fazer

  • O túnel encaminha uma porta local para o banco como o jump host o enxerga, então o host e a porta do banco que você digitou são os que o jump host alcança.
  • Na primeira vez que você chega a um jump host, o app mostra “Primeira vez neste servidor. Impressão digital: …” e a guarda. Se a chave mudar depois, “A chave do servidor SSH mudou. Conexão interrompida: o servidor pode ter sido reinstalado, ou pode haver alguém no meio.”, e nada é enviado.

O que você não pode fazer, e por quê

  • Só PostgreSQL e MySQL / MariaDB usam o túnel. O interruptor aparece no formulário de todos os tipos, mas no MongoDB, no Redis, no Neon e nos outros ele não tem efeito.Ainda não
  • Chaves privadas com senha (passphrase) não funcionam: o formulário não tem campo para ela.De propósito
  • Não há agente SSH no Android, e só existe um encaminhamento de porta local: sem saltos encadeados.De propósito

Tipos de conexão

O que acontece ao abrir cada tipo depois de conectá-lo.

TipoO que acontece
Neon PostgreSQLEscolha um projeto. O SQL roda por JDBC, com verificação completa de certificado, quando o app consegue ler a conexão do projeto na sua conta e, caso contrário, pela API HTTP do Neon (“Sem conexão direta com este projeto Neon: usando a API HTTP dele. Transações com várias sentenças e um EXPLAIN ANALYZE real não estão disponíveis por essa via.”). O SQL funciona em projetos com o banco neondb e o papel neondb_owner padrão.
SupabaseEscolha um projeto; o SQL passa pela API em todos os schemas (chips Schema aparecem quando há mais de um). A API não fornece a senha do banco, então Usar uma conexão direta na tela do projeto abre o formulário preenchido com o host, a porta e o usuário do pooler: digite a senha uma vez e salve como uma conexão PostgreSQL comum.
PlanetScale MySQLSua conta lista bancos e Ramos. Tocar em uma branch cria uma senha de branch na sua conta do PlanetScale e abre a branch como conexão MySQL com verificação completa de certificado. No Free, uma branch que você ainda não abriu conta como uma conexão sua: com uma já salva, o toque abre a janela Banco de Dados Pro e nenhuma senha é criada. Excluir essa conexão revoga a senha; se a revogação falhar, o app diz para você fazer isso no painel do PlanetScale.
Turso SQLiteSua conta lista os bancos; o SQL vai pela API HTTP do Turso.
Cloudflare D1Sua conta lista bancos (o D1 está sempre na lista) e abre direto nas tabelas dele; o SQL passa pela API do D1.
MongoDB AtlasSua conta lista os clusters. Escolher um abre o formulário com o host SRV preenchido e você digita o usuário e a senha do banco (o Atlas não os fornece). Um host mongodb+srv:// é resolvido com DNS over HTTPS em dns.google, recorrendo a cloudflare-dns.com.
Upstash RedisSua conta lista bancos; abrir um conecta como um banco Redis de verdade, ou por REST quando a API do Upstash não fornece senha do Redis. A conexão vive na memória.
MongoDB, Redis, Cloud FirestoreOs navegadores e as ferramentas deles estão em Ferramentas de banco de dados.

Tabelas e dados

Toque em uma tabela para abri-la. Cada página tem 100 linhas, ordenadas pela chave primária, então uma linha que você edita fica onde estava.

A lista de tabelas

As tabelas e views da conexão aberta. Abra tocando em uma conexão ou em Ferramentas → Tabelas.

O que você pode fazer

  • Busque com Buscar tabelas…. A lista tem Tabelas (cada uma com “~N linhas · tamanho”, onde o ~ indica uma contagem estimada, e um selo Sistema quando se aplica) e Views; o PlanetScale acrescenta Ramos e o Supabase, quando há mais de um schema, chips Schema.
  • Toque em uma tabela ou view para abrir os dados. O ⋮ de uma linha oferece Dados, Estrutura, Exportar e favoritos.
  • Toque em + (Criar tabela) para abrir o formulário de tabela.
  • O ⋮ da lista tem Importar CSV (abre a prévia de importação, que aceita CSV, TSV, JSON, NDJSON, SQL e XLSX; veja Ferramentas de banco de dados) e, só no motor local, Importar da área de transferência e Diff de schema.

O que você não pode fazer, e por quê

  • Criar tabela é oferecido no motor local, em servidores PostgreSQL e em servidores MySQL (e em branches do PlanetScale abertas); não no Neon, Supabase, Turso, D1 nem na conta do PlanetScale. Nesses, execute CREATE TABLE no console.De propósito
  • No Free, com 4 tabelas na conexão, Criar tabela leva um selo Pro, e criar uma quinta tabela (pelo formulário, importando com “Create table” ou com um CREATE TABLE no console) abre o muro do Pro.Pro
  • O MySQL / MariaDB não lista índices, chaves estrangeiras nem triggers (“… não expõe os índices.”), e suas contagens de linhas são a estimativa do catálogo.De propósito

O visualizador de dados

O cabeçalho mostra a tabela; o subtítulo, banco · conexão. A contagem de linhas é calculada uma vez por tabela e conjunto de filtros.

O que você pode fazer

  • A barra superior tem Filtrar, Ordem, Colunas, Views, um ícone de atualizar, o intervalo (1-100 of 240, ou Página N quando o total é desconhecido) e Anterior / Próxima.
  • Toque em um cabeçalho de coluna para ordenar; pressione e segure para Fixar coluna / Libertar coluna, Ajustar larguras, Restaurar larguras e linhas Compacta / Confortável.
  • Pressione e segure uma célula: se ela não faz parte da chave primária, você a edita; se faz, você começa a selecionar linhas. Toque em uma linha para abrir Detalhes da linha.
  • O ⋮ do cabeçalho tem Inserir linha, Adicionar coluna, Detalhes da tabela e Exportar.
  • Inserir linha abre um formulário com um campo por coluna, cada um rotulado com o nome, o tipo e PK quando é chave. Deixe um campo vazio e a coluna usa o valor padrão (ou NULL, ou o auto incremento). Preparar linha coloca o INSERT na fila (é preciso preencher pelo menos um campo, ou o app avisa) e Aplicar o executa. Também funciona numa tabela sem chave primária.

O que você não pode fazer, e por quê

  • Edições e exclusões precisam de uma chave primária utilizável (e nenhuma chave primária em NULL na linha); caso contrário o app não consegue identificar as linhas com segurança e não aplica nada. Inserir linha não precisa dela.De propósito
  • A chave primária não é editada célula a célula: pressionar e segurar nela seleciona a linha.De propósito
  • No Neon, Supabase, Turso e D1 com Somente leitura ligado, edições, exclusões e Drop / Truncate / Rename são bloqueados: “Este banco está em somente leitura, então nada foi alterado. Desative «Read-only» acima do editor do console SQL para fazer mudanças.”De propósito
  • Sem uma contagem total (Supabase, ou um COUNT(*) que falha), a barra mostra Página N e Próxima só avança se a página veio cheia.Terceiros
The customers table with Filter, Sort, Columns and the page range
Uma tabela — filtros, ordem, colunas e páginas em uma linha
Filter sheet with column, operator and value fields
Os filtros rodam no servidor, não só na tela

Filtrar

Um filtro reduz o que o banco devolve, não só o que você vê: os filtros se combinam com AND e rodam no servidor como um WHERE.

O que você pode fazer

  • Escolha Selecionar coluna, um Operador (Alterar) entre =, !=, >, <, >=, <=, LIKE, NOT LIKE, IS NULL, IS NOT NULL, IN e BETWEEN, digite um Valor e toque em Adicionar filtro.
  • A lista Ativos tem Remover filtro, e Limpar tudo a esvazia. IN aceita valores separados por vírgula; o valor é comparado como texto entre aspas; IS NULL e IS NOT NULL não precisam de valor.

O que você não pode fazer, e por quê

  • BETWEEN está na lista de operadores, mas o painel tem um único campo de valor, sem De / Até: ele produz BETWEEN 'x' AND ''. Use dois filtros, >= e <=.Ainda não

Colunas

Mostre, oculte e formate as colunas desta tabela.

O que você pode fazer

  • Ligue ou desligue cada coluna, ou toque em Mostrar tudo.
  • Dê um Formato a uma coluna: Sem formato, Stars, Progress Bar, Boolean, Link ou Color.
  • Uma coluna mascarada por uma regra (veja Ferramentas de banco de dados) mostra um cadeado; Mostrar em claro a revela durante a sessão e pede sua impressão digital quando o bloqueio biométrico está ligado.

O que você não pode fazer, e por quê

—

Visões salvas

Views guarda uma forma de olhar para uma tabela.

O que você pode fazer

  • Guardar a vista atual com um Nome da vista: ele guarda os filtros, a ordem, as colunas visíveis, as larguras e as colunas fixadas para esta conexão e tabela.
  • Aplique uma visão com um toque (Tudo, sem filtros limpa tudo) ou Excluir.

O que você não pode fazer, e por quê

  • As visões salvas ficam neste dispositivo e nesta conta: Partilha exporta conexões e consultas salvas, não visões.De propósito

Editar células e aplicar alterações

As edições esperam em uma fila até você aplicá-las.

O que você pode fazer

  • Pressione e segure uma célula que não faz parte da chave primária, mude o Valor ou ligue NULL, e toque em Salvar. A célula fica destacada e aparece uma barra embaixo com “N alterações”.
  • Ver SQL mostra os comandos exatos (UPDATE … SET col = value WHERE <every primary-key column>), Descartar os descarta e Aplicar os executa.

O que você não pode fazer, e por quê

  • Aplicar executa os comandos um a um e para no primeiro erro, sem transação: “Aplicadas %1$d de %2$d: …”. Os anteriores ao erro continuam aplicados.De propósito
  • O SQL pendente não pode ser editado, só aplicado ou descartado.De propósito

Detalhe da linha

Toque em uma linha (quando não há seleção ativa). Em um tablet na horizontal, ela abre como um painel ao lado da grade, em vez de substituí-la.

O que você pode fazer

  • Leia a chave primária da linha (ou “Linha N”) e toque em Copiar JSON para copiar cada valor como texto ou null.
  • Edite um campo por coluna, cada um rotulado com seu tipo e com selos PK, FK, NOT NULL, um interruptor NULL nas colunas que aceitam nulo e uma caixa monoespaçada de várias linhas para JSON.
  • O rodapé diz “Sem alterações” ou “N alterações”; Salvar enfileira só os campos que você mudou e os aplica.

O que você não pode fazer, e por quê

  • Não há navegação para a linha anterior / seguinte nem exclusão a partir daqui; sem uma chave primária utilizável, ele não salva.De propósito

Selecionar linhas

Pressione e segure uma célula da coluna da chave primária para começar a selecionar.

O que você pode fazer

  • Marque linhas nas caixas de seleção; a barra diz “N selecionadas” e tem Limpar.
  • Copiar como copia as linhas para a área de transferência como CSV, TSV, JSON, NDJSON, SQL (INSERT), SQL (full) ou Markdown.
  • Exportar oferece os mesmos formatos mais Excel (XLSX), grava um arquivo e abre a folha de compartilhamento do sistema.
  • Excluir enfileira um DELETE … WHERE <primary key> por linha, passa pelo modo seguro e espera por Aplicar.

O que você não pode fazer, e por quê

  • Exportar aqui compartilha um arquivo e não pergunta o destino; para escolher uma pasta, use ⋮ → Exportar.De propósito
Row detail form for id = 2 with typed fields and NULL switches
Detalhe da linha — campos com tipo e um NULL de verdade
Three selected rows with Copy As, Export and Delete in the bottom bar
Mantenha pressionada a coluna da chave para selecionar linhas

Adicionar uma coluna

⋮ → Adicionar coluna abre Nova coluna.

O que você pode fazer

  • Preencha Nome, um tipo (os mesmos 15 de Criar tabela), os chips NN e UQ e um Padrão; uma prévia mostra name TYPE NOT NULL UNIQUE.
  • Toque em Adicionar coluna para executar ALTER TABLE … ADD COLUMN no dialeto da conexão.

O que você não pode fazer, e por quê

  • Em uma tabela que tem linhas, uma coluna NOT NULL precisa de um default, senão o botão fica desabilitado com “A tabela já tem N linhas. Uma coluna NOT NULL precisa de um valor padrão — caso contrário o motor não tem o que colocar nelas.”De propósito
  • Este formulário não tem chips PK nem AI, só NN e UQ.De propósito

Detalhes da tabela

⋮ → Detalhes da tabela no visualizador, ou Estrutura em uma linha da lista de tabelas.

O que você pode fazer

  • Leia cinco abas: colunas (tipo, PK / FK / NOT NULL, Padrão, Referência a), Índices, Chaves (Chave primária e Chaves estrangeiras), Triggers e DDL, com Copiar DDL.
  • Use a Zona de perigo: Renomear, Truncar e Apagar tabela. Cada um pede confirmação e passa pelo modo seguro. Em motores SQLite (Turso, D1), truncar executa DELETE FROM.

O que você não pode fazer, e por quê

  • Quando um motor não expõe índices, chaves, triggers ou o DDL, a aba diz isso (“Este motor não devolve o DDL de uma tabela.”) em vez de mostrar uma lista vazia.De propósito
  • Você não pode editar índices, chaves nem triggers por aqui.De propósito
  • Em bancos na nuvem, Somente leitura bloqueia Drop, Truncate e Rename.De propósito

Criar uma tabela

Criar tabela na lista de tabelas, ou Ferramentas → Nova tabela.

O que você pode fazer

  • Digite um Nome da tabela. Para cada coluna defina um Nome, um tipo (SMALLINT, INTEGER, BIGINT, REAL, DECIMAL(p,s), CHAR(n), VARCHAR(n), TEXT, BLOB, BOOLEAN, DATE, DATETIME, TIMESTAMP, JSON ou UUID), os chips PK, IA, NN e UQ e um Padrão. Adicione e remova colunas à vontade.
  • Toque em Criar para executar CREATE TABLE IF NOT EXISTS no dialeto da conexão (SERIAL / BIGSERIAL e BYTEA no PostgreSQL, AUTO_INCREMENT e CHAR(36) para UUID no MySQL). A lista recarrega.

O que você não pode fazer, e por quê

  • O formulário não tem chaves estrangeiras, índices nem restrições CHECK, só flags por coluna.De propósito
  • No Free, com 4 tabelas, Criar abre o muro do Pro.Pro

Exportar uma tabela

⋮ → Exportar, o ⋮ de uma linha na lista de tabelas, Ferramentas → Exportar (só com uma tabela aberta) ou Exportar sob os resultados do console.

O que você pode fazer

  • Escolha um Formato (CSV, TSV, JSON, NDJSON, SQL (INSERT), SQL (full), Markdown ou Excel (XLSX)) e, quando há filtros, Linhas: Linhas filtradas (N) ou Tabela inteira.
  • Toque em Guardar em… e escolha para onde vai. “N linhas escritas” vai contando. Uma tabela é lida em lotes de 1.000 linhas e gravada linha a linha, então não há limite de tamanho.

O que você não pode fazer, e por quê

  • Exportar um resultado do console grava só as linhas que estão na tela (no máximo 500) e não executa a consulta de novo.De propósito
  • Uma tabela sem chave primária de uma única coluna é lida com LIMIT/OFFSET, então gravações durante a exportação podem distorcê-la; uma tabela sem chave primária não tem ordem garantida.De propósito

Console SQL

Abra em Ferramentas → Consola SQL. Ele aparece para conexões que executam SQL: o motor local, seus servidores PostgreSQL e MySQL, Neon, Supabase, branches do PlanetScale abertas, Turso e Cloudflare D1. Se uma tabela está aberta e o editor está vazio, ele começa com SELECT * FROM <table> LIMIT 50.

O editor

Um editor para todos os dialetos.

O que você pode fazer

  • Números de linha e realce de sintaxe no dialeto da conexão (PostgreSQL, MySQL ou SQLite). Autocorreção e maiúsculas automáticas ficam desligadas.
  • A barra tem Desfazer, Refazer, Formatar e IA; o menu ⋮ tem Nova aba, Histórico de consultas, Consultas salvas, Parâmetros da consulta (só quando a consulta tem parâmetros) e Letra mais pequena / Letra maior.
  • As sugestões aparecem como chips a partir do segundo caractere, no máximo dez: até 5 palavras-chave, 5 tabelas, 3 views, 5 colunas da tabela aberta e 3 funções.
  • Com o teclado aberto, uma fileira de teclas fica acima dele: fx (alterna entre palavras e até 24 funções do dialeto), os símbolos ( ) , ; = * ' " < > . :, onze palavras (SELECT, FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, LIMIT, INSERT, UPDATE, DELETE) e Executar fixo à direita.
  • O layout se adapta: um seletor Editor | Resultados em um celular na vertical, duas colunas com divisor arrastável (20–80 %, toque duplo para 50/50) em um celular na horizontal, linhas de 30 / 50 / 70 % em um tablet na vertical e colunas com uma faixa de abas em um tablet na horizontal.

O que você não pode fazer, e por quê

  • MongoDB, Redis, Upstash e Firestore não têm console SQL: a tela deles é a própria conexão, e a ferramenta não é oferecida.De propósito

Executar, parar e limites

O que acontece quando você toca em Executar.

O que você pode fazer

  • Executar executa o editor inteiro (só a seleção com Ctrl+Shift+Enter). Enquanto roda, Resultados mostra “Executando · N s” e Executar vira Parar.
  • Um SELECT simples sem LIMIT recebe LIMIT 500 (não é acrescentado a WITH …, a selects de COUNT / SUM / AVG / MIN / MAX, nem quando o texto já contém LIMIT). Conexões remotas mantêm no máximo 500 linhas. Uma consulta é cortada após 30 s no motor local; em servidores remotos o socket espera 60 s (mais 10 s para conectar).
  • Comandos que não retornam linhas dizem o que aconteceu: “Tabela criada · 53 ms”, “3 linhas afetadas · 8 ms”, “Instrução executada · …”.
  • No motor local, nos seus servidores PostgreSQL e no MySQL, Parar cancela a consulta no servidor: “Consulta cancelada no servidor.”
  • Cada execução vai para o histórico (500 entradas) e para o log de auditoria (1.000) e recarrega a lista de tabelas se criou ou apagou algo.

O que você não pode fazer, e por quê

  • No Neon, Supabase, Turso e D1, Parar só deixa de esperar: “Deixou de se esperar pela consulta. O servidor pode continuar a executá-la.”De propósito
  • Cada execução abre a própria conexão, então BEGIN em uma execução e COMMIT na seguinte não formam uma transação.De propósito
SQL console with a formatted query joining customers and orders
Console SQL — destaque de sintaxe, Formatar e IA na barra
Results: 12 rows with name and email columns and the result actions below
Resultados — número de linhas, tempo e o que fazer com eles

Modo seguro

Antes de executar um comando perigoso, o console mostra Operação perigosa (“Esta consulta executará uma operação …”) com o SQL exato e “Linhas afetadas estimadas”. Nada roda até você tocar em Executar mesmo assim; Cancelar deixa para lá.

O que você pode fazer

  • Ele dispara com DELETE ou UPDATE sem WHERE, DROP TABLE, DROP VIEW, DROP INDEX, um DELETE dentro de uma CTE sem WHERE e qualquer texto com TRUNCATE.
  • No MySQL / MariaDB / PlanetScale a lista é maior: DROP DATABASE, ALTER TABLE … DROP, RENAME TABLE, gerenciamento de usuários e privilégios (GRANT…), KILL, FLUSH, RESET, LOAD DATA, INTO OUTFILE, SET GLOBAL, SHUTDOWN, REPLACE INTO, plugins e LOAD_FILE().
  • Drop, Truncate e Rename de uma tabela, excluir linhas e excluir um banco a partir da tela do motor também passam por ele.

O que você não pode fazer, e por quê

  • O modo seguro não tem interruptor: está sempre ligado.De propósito

Parâmetros

Parâmetros nomeados transformam uma consulta em um modelo.

  1. 1Escreva parâmetros nomeados na consulta: SELECT * FROM orders WHERE status = :status AND total > :min;
  2. 2Toque em Executar. Em vez de executar, o console abre Parâmetros da consulta com um campo por nome.
  3. 3Preencha os valores e toque em Executar. Os valores são enviados como texto entre aspas. O editor mantém a consulta com seus :names, e o histórico também.

O que você não pode fazer, e por quê

  • Só :name pede um valor; @name e $1 são reconhecidos mas não perguntam. Não há tipos: todo valor vai como texto.De propósito

Abas

Várias consultas ao mesmo tempo.

O que você pode fazer

  • ⋮ → Nova aba (em um tablet na horizontal, o + da faixa). Em um celular, a faixa aparece com duas ou mais abas.
  • Toque em uma aba para trocar, em ✕ para fechar, e pressione e segure para renomear. Cada aba guarda seu SQL e seu resultado, e as abas sobrevivem ao fechar o app. Sempre há pelo menos uma.

O que você não pode fazer, e por quê

  • No Free, a terceira aba abre o muro do Pro.Pro

O que fazer com os resultados

Uma fileira de ações fica sob a grade de resultados, e há um ícone no cabeçalho.

AçãoO que faz
Copiar comoCSV, TSV, JSON, NDJSON, SQL (INSERT), SQL (full) ou Markdown, para a área de transferência. Os identificadores vêm entre aspas do jeito que o motor da conexão espera (sem crases no PostgreSQL).
ExportarAbre Exportar com as linhas que estão na tela.
GráficosUm gráfico a partir do resultado (precisa de duas ou mais colunas). Em Ferramentas de banco de dados.
ExplainAbre o plano de execução da consulta que está no editor.
Salvar consultaSalva com um Nome da consulta.
Adicionar ao painel (ícone do cabeçalho)Salva a consulta como widget de dashboard depois de executada. Em Ferramentas de banco de dados.

O que você não pode fazer, e por quê

  • No Free, Salvar consulta abre o muro do Pro quando você já tem 5 consultas salvas.Pro

Histórico e consultas salvas

⋮ → Histórico de consultas ou Consultas salvas abre um painel no console.

O que você pode fazer

  • Escolha uma entrada para carregá-la no editor.
  • Salve a consulta com um Nome da consulta, Excluir entradas e mova consultas salvas para pastas (Sem pasta).

O que você não pode fazer, e por quê

  • 5 consultas salvas no Free; a sexta abre o muro do Pro.Pro
  • O histórico guarda as últimas 500 entradas.De propósito

Escrever SQL com IA

O assistente fica dentro do editor, acima do seu código. Ele escreve uma proposta; nada chega ao editor até você aceitar, e nada é executado sozinho.

O que você pode fazer

  • Toque em IA. Uma linha com Descreva a consulta de que precisa… abre acima do código; descreva a consulta com suas palavras e toque em Gerar. Um atalho: escreva o pedido como comentário na linha do cursor, como -- customers who ordered this month, e toque em IA.
  • Leia a proposta. Acima dela estão a origem (o provedor e o modelo, ou Sem ligação — gerado por regras, não por um modelo), a Explicação e setas para alternar entre alternativas; Gerar de novo pergunta de novo.
  • Aceitar coloca no editor, substituindo a seleção ou em uma nova linha abaixo do cursor. Descartar deixa o editor como estava. Uma proposta destrutiva vem com “Destructive operation — review carefully”.

O que você não pode fazer, e por quê

  • Sem nenhum provedor conectado, o assistente recorre a um gerador de regras embutido para consultas simples e diz por quê: “Não há nenhum fornecedor de IA ligado. Liga um nas definições de IA para que a consulta seja escrita por um modelo.” Se o provedor demora mais de 90 segundos: “O fornecedor de IA não respondeu em 90 segundos, por isso não foi usado nenhum modelo.”Precisa de rede
  • Se o modelo responde algo que não é SQL, você vê a resposta dele sob “O modelo não devolveu SQL”, sem o botão Aceitar.De propósito
  • O que ele sabe: o dialeto e os nomes de até 40 tabelas e views com suas colunas (no máximo 6.000 caracteres), então ele escreve ciudad quando a coluna se chama ciudad. Nenhum dado de linhas é enviado.
  • Qual modelo: o definido para Assistente SQL nas configurações de IA, sua escolha manual ou um modelo rápido no modo Automático.
  • Consentimento: na primeira vez que um provedor é usado, o app pergunta Enviar para …? antes de enviar qualquer coisa.

Bancos na nuvem: Somente leitura, confirmação e impressão digital

No Neon, Supabase, Turso e Cloudflare D1, o console pergunta antes de gravar. Uma linha fixa acima do editor tem o interruptor Somente leitura (“As gravações estão bloqueadas” / “As gravações pedem confirmação”).

O que você pode fazer

  • Somente leitura vem ligado por padrão, por banco (trocar de projeto liga de novo): só leituras são enviadas. Executar uma gravação diz “«Somente leitura» está ativado, então esta gravação não foi enviada. Desative-o acima do editor para executá-la.”
  • Com ele desligado, toda gravação abre “Gravar em …?” listando o que fará (cria uma tabela, exclui uma tabela, esvazia uma tabela, insere linhas, atualiza as linhas que atendem à condição, atualiza todas as linhas (sem WHERE)…); Executar confirma.
  • Uma gravação destrutiva (DROP, TRUNCATE, DELETE ou UPDATE sem WHERE…) tem o título “Gravação destrutiva em …”, seu botão é Continuar e depois ela pede sua impressão digital ou o PIN do dispositivo (“Confirme a gravação destrutiva”). Um celular sem bloqueio de tela continua com a confirmação já dada.
  • O mesmo interruptor governa as edições na grade de dados, Drop / Truncate / Rename e o plano medido de uma gravação.

O que você não pode fazer, e por quê

  • O chat de IA respeita o interruptor e não pode executar gravações destrutivas em um banco na nuvem: ele entrega o SQL para você executar no console SQL.De propósito

Plano de execução

Ferramentas → Plano de execução, ou Explain sob os resultados. Precisa de uma consulta no editor: “Escreve primeiro uma consulta — o plano explica como seria executada.”

O que você pode fazer

  • Veja o plano como árvore, com uma barra de custo por passo e o passo mais caro em vermelho, rotulado “Estimado pelo planeador — a consulta não foi executada” ou “Medido — a consulta foi mesmo executada”, com “Planeamento: N ms” e “Execução: N ms”. Toque em um passo para ver Detalhe do passo (passo, tabela, custo total, custo próprio, linhas, largura da linha). O ícone de atualizar pergunta de novo e mantém se foi medido.
  • Toque em Analisar a sério (“Executa a consulta e mede cada passo em vez de o estimar.”) no dialeto PostgreSQL: o motor local, Neon, Supabase e seus servidores PostgreSQL. Se o comando não é só de leitura, ele pergunta “Executar esta instrução?”: “Não é uma instrução só de leitura, e medi-la significa executá-la: vai alterar os teus dados.”
  • Leia Índices sugeridos quando há uma varredura sequencial com filtro sobre pelo menos 100 linhas estimadas (o mínimo não vale se o motor não dá estimativa); cada uma tem Copiar. “Aqui não se cria nada: copia a instrução e decide na consola.”
  • Toque em Explicar com IA para que seu modelo explique o plano. Ele envia o motor, a consulta e o plano, e diz “Foi … que escreveu isto a partir do JSON do plano. Confirma antes de agir.” Na primeira vez por provedor, pergunta Enviar para …?

O que você não pode fazer, e por quê

  • MySQL / MariaDB / PlanetScale dão só um plano estimado, e o SQLite (Turso, D1) uma árvore sem custos (“Este motor não publica custos: diz o que faz, não quanto custa.”). Analisar a sério não aparece ali.De propósito
  • Em um banco na nuvem, Analisar a sério em uma gravação obedece a Somente leitura e pede sua impressão digital se ela destrói dados.De propósito
  • Em um projeto Neon acessado por HTTP não existe EXPLAIN ANALYZE de verdade.Terceiros
  • Ele nunca cria um índice; só copia o CREATE INDEX.De propósito
Measured execution plan tree with an index suggestion
Plano de execução medido: o passo em vermelho é o caro

Esquema: árvore, ER, designer e comparar

Tabelas, relações e design. A árvore, o diagrama ER, a importação e a comparação funcionam em qualquer conexão que execute SQL e tenha tabelas.

Árvore do esquema

Ferramentas → Árvore do esquema. Em um tablet na horizontal, a mesma árvore fica pendurada na conexão ativa no painel lateral.

O que você pode fazer

  • Expanda o nome da conexão, depois Tables (N) e cada tabela: suas colunas (name: type, com PK na chave) e, onde listados, seus índices (name (columns)); Views (N) guarda as views. Uma tabela mostra “(N rows)” quando a contagem é conhecida. Os rótulos desta árvore ficam em inglês em todos os idiomas.
  • Toque em uma tabela ou coluna para abrir os dados dessa tabela.
  • Os índices são listados no PostgreSQL, Neon, Supabase, Turso e D1; não no MySQL / MariaDB.

O que você não pode fazer, e por quê

  • A tela também desenha as seções Funções / Procedures, Sequences, Enums / Tipos personalizados e Dependências, mas elas nunca são preenchidas.Ainda não
  • Os triggers ficam de fora da árvore de propósito.De propósito

Diagrama ER

Ferramentas → Diagrama ER. Ele desenha as tabelas e relações de qualquer conexão SQL com tabelas: o motor local e seus servidores PostgreSQL e MySQL pelos drivers deles, e Neon, Supabase, Turso e D1 lendo o catálogo deles com SQL.

O que você pode fazer

  • Dê zoom com pinça e arraste o canvas. O cabeçalho diz “N tabelas · M relações”; com zoom reduzido, “Colunas ocultas: aproxima para as leres”. Toque em uma tabela para abrir os dados dela.
  • Use a barra de ferramentas: Editar como desenho (copia o esquema para o designer), Selecionar tabelas (Selecionar tudo / Limpar; nenhuma selecionada significa todas), Ajustar ao ecrã, Reorganizar, ampliar e reduzir, Colorir por schema, Minimapa e Exportar diagrama (um PNG em 2× com o fundo do tema; o seletor de arquivos propõe er-diagram.png).

O que você não pode fazer, e por quê

  • MongoDB, Redis, Upstash e Firestore não têm diagrama ER, e ele nunca recorre ao armazenamento do próprio PocketCode.De propósito
  • Chaves estrangeiras compostas são desenhadas como várias relações de uma coluna.Ainda não
  • O diagrama não pode ser editado no lugar: use Editar como desenho.De propósito
ER diagram with customers, orders and subscribers
Diagrama ER do banco local

Schema designer

A partir da tela inicial (Schema Designer, sem precisar de conexão) ou Ferramentas → Desenhador de esquema. Os projetos são arquivos JSON no armazenamento privado do app.

O que você pode fazer

  • A lista de projetos tem Buscar schemas…, cartões com “N tabelas” e “N relações”, um ⋮ com Duplicar e Excluir, e Novo schema.
  • O assistente Novo projeto de schema tem três passos: Detalhes do projeto (Nome do projeto, descrição), Banco de destino (MySQL, PostgreSQL, SQLite, MariaDB, SQL Server ou MongoDB) e Começar a partir de modelo: Schema vazio ou Blog (6 tabelas), E-Commerce (8), Social Network (7), SaaS Platform (7), Chat App (5) ou Project Management (7). Voltar, Continuar, Criar projeto.
  • No editor, arraste tabelas, Ajustar zoom, Adicionar tabela, Desfazer / Refazer, e desenhe uma relação tocando em uma coluna de origem e depois na tabela de destino (1:1, 1:N, N:M; No Action, Cascade, Set Null, Set Default ou Restrict). O nome do projeto é editável e um chip mostra o motor de destino.
  • O painel do editor de tabela renomeia a tabela, define a cor dela e adiciona colunas: nome, um tipo (Selecionar tipo de coluna, com sugestões e aviso de palavra reservada), Restrições (Chave primária, Auto-incr., Não nulo, Único, Indexado), Comprimento, Precisão, Escala, Padrão, Comentário e Adicionar FK.
  • Aplicar a … abre o script no console, sem executá-lo, com cada comando destrutivo marcado com -- ⚠: “Script aberto na consola: N instrução(ões), M marcadas com ⚠. Nada foi executado”.

O que você não pode fazer, e por quê

  • Aplicar a … nunca executa o script: é a operação mais destrutiva do módulo, por isso passa pelo modo seguro do console e pelo limite de tabelas do plano. Ele precisa de uma conexão SQL (“Abra uma ligação SQL para aplicar este desenho”) e de pelo menos uma tabela.De propósito
  • O designer não tem um muro Pro próprio, mas no Free os CREATE TABLE do script esbarram no limite de 4 tabelas quando você os executa no console.Pro
  • Os projetos ficam neste dispositivo: não são sincronizados entre dispositivos, e o destino MongoDB só adapta os tipos de coluna.De propósito

Export Schema

Exportar no editor de esquema abre Exportar schema.

O que você pode fazer

  • Escolha um dos sete formatos: SQL DDL, Room Entity, Prisma, TypeORM, Django, JSON Schema ou DBML, e toque em Gerar ….
  • Leia o Saída gerada (“N linhas”), depois Copiar tudo (“Copiado!”) ou Compartilhar como texto.

O que você não pode fazer, e por quê

  • Ele só gera texto e não toca em nenhum banco: use Aplicar a … para obter um script no console.De propósito

Importar esquema

Ferramentas → Importar esquema (conexão SQL com pelo menos uma tabela), ou Editar como desenho no diagrama ER.

O que você pode fazer

  • Traga as tabelas, colunas, índices e chaves estrangeiras do banco aberto para o designer. Depois ele lista o que não pôde ser importado (“N coisa(s) não puderam ser importadas”).

O que você não pode fazer, e por quê

  • Motores sem SQL não têm esquema para importar (“… não fala SQL, por isso não tem esquema para importar”).De propósito
  • No SQLite (Turso, D1) os índices não são importados, e chaves estrangeiras compostas chegam como várias de uma coluna.Ainda não

Comparar esquemas

Ferramentas → Comparar esquemas, ou o ⋮ da lista de tabelas → Diff de schema (motor local). É uma ferramenta Pro. Em um projeto PlanetScale, a mesma entrada mostra o diff do último deploy request e é gratuita (veja Ferramentas de banco de dados).

O que você pode fazer

  • Toque em Salvar snapshot (guarda o esquema desta conexão: “Instantâneo do esquema guardado (N tabelas)”), altere o esquema e depois Executar diff.
  • Leia Tabelas adicionadas, Tabelas removidas e Tabelas modificadas (+ name: type e − name para colunas).
  • Toque em Gerar migração para escrever o SQL no console sem executá-lo, com aspas adequadas ao motor, com um CREATE TABLE completo para tabelas novas e as mudanças de tipo e de nulabilidade.

O que você não pode fazer, e por quê

  • No Free, abri-lo pelas Ferramentas ou pelo menu, ou tocar em Executar diff, abre o muro do Pro.Pro
  • Ele compara tabelas e colunas (nome, tipo, nulabilidade), não índices, chaves estrangeiras, views nem sequences.De propósito
  • A tela lista só colunas adicionadas e removidas; uma coluna cujo tipo ou nulabilidade mudou não aparece ali, embora esteja na migração.Ainda não

Backups

Ferramentas → Cópias de segurança (com o título Backup e restauração) é oferecido em toda conexão, mas só o PostgreSQL local pode ter backup. Tem três abas: Criar, Histórico e Agendamento.

Criar

Um backup é gravado no armazenamento do app; Os teus ficheiros move dumps para dentro e para fora.

O que você pode fazer

  • Escolha o Método de backup (pg_dump ou SQL Dump), adicione uma Nota (opcional) e toque em Iniciar backup (“Gravado em …”).
  • Em Os teus ficheiros, Guardar em… grava um dump direto em um documento que você escolhe, e Importar cópia… traz um arquivo .sql ou pg_dump -Fc: o método vem da assinatura PGDMP, não da extensão. Salvar e importar passam pelo seletor de arquivos do sistema, então o arquivo fica onde você escolher e sobrevive à desinstalação do app.

O que você não pode fazer, e por quê

  • Outras conexões dizem por quê: “<engine> runs on a server, so its backups belong to that provider. PocketCode can only back up databases stored on this device.” ou “<engine> is not a SQL database — export its collections/keys instead.”De propósito
  • Não há destinos na nuvem (Drive, Firebase): a pasta de backups é privada do app, e só o que Guardar em… ou Exportar grava fora dela sobrevive a uma desinstalação.De propósito

Histórico e restauração

Todos os backups, do mais novo ao mais antigo.

O que você pode fazer

  • Cada linha mostra a data, o método, “N tabelas · tamanho” e os selos Importada e Agendado, com Restaurar, Exportar e Excluir. Sem nenhum ainda, diz “Sem backups ainda”; depois de uma execução agendada que falhou, “A última cópia falhou”.
  • Restaurar pergunta “Sobrescrever o banco de dados?”. Uma cópia do banco atual é salva antes (pre_restore_<time>.dump), então dá para desfazer; o resultado diz “Restaurada — … A base anterior fica como …”. Um dump PGDMP é restaurado com pg_restore; um dump de texto é reexecutado por JDBC.

O que você não pode fazer, e por quê

  • Se a cópia de segurança falhar, nada é restaurado.De propósito
Backup History tab with a pg_dump backup and restore, export and delete buttons
Cópias de segurança — restaurar faz antes uma cópia de segurança

Agendamento

Um interruptor Pro para backups automáticos.

O que você pode fazer

  • Ligue Cópias programadas e defina a Frequência (Every hour, Every 6 hours, Every 12 hours, Daily ou Weekly), o Hora do dia (3 por padrão) e Máximo de backups a manter (7 por padrão). Ele roda em segundo plano com o WorkManager e é pulado quando a bateria ou o armazenamento estão baixos.

O que você não pode fazer, e por quê

  • Ligar o agendamento ou alterá-lo é Pro (SCHEDULED_BACKUP). Criar, restaurar, exportar, importar e excluir backups é grátis.Pro
  • Não há serviço em primeiro plano nem alarme exato: o sistema pode adiar ou matar a execução, e o resultado é registrado no histórico.Google Play
  • Uma execução agendada copia o PostgreSQL local (o último banco que você abriu) só se o motor estiver rodando naquele momento; ela nunca o inicia. Também sempre copia o banco de dados interno do próprio PocketCode, em um armazenamento separado cujo histórico esta tela não mostra.De propósito

Ferramentas

O ícone de grade abre Ferramentas: 25 ferramentas em seis seções, com uma caixa de busca e uma linha Frequentes. Em um tablet na horizontal é uma barra permanente (280 dp, recolhida para 72 dp). O que não se aplica à conexão aberta fica oculto, não esmaecido: com MongoDB, Redis, Upstash ou Firestore aparecem só nove ferramentas (Tabelas, Painéis, Desenhador de esquema, Exportar, Cópias de segurança, Monitor, Segurança, Registo de auditoria e Partilha).

SeçãoFerramentas
ExplorarTabelas, Árvore do esquema, Diagrama ER — nesta página.
ConsultarConsola SQL e Plano de execução — nesta página. Histórico de consultas, Consultas guardadas, Gráficos e Painéis — em Ferramentas de banco de dados.
DesenharDesenhador de esquema, Nova tabela, Comparar esquemas (Pro) e Importar esquema — nesta página.
DadosExportar e Cópias de segurança — nesta página. Dados de teste e Importar — em Ferramentas de banco de dados.
ServidorConfiguração do motor, Extensões, Registo do servidor e Nova base de dados (selo Pro no Free) — nesta página. Monitor — em Ferramentas de banco de dados.
SegurançaSegurança, Registo de auditoria e Partilha — em Ferramentas de banco de dados.

Iniciar e Parar o motor não estão no catálogo: ficam no cartão do motor e na tela do motor.

Monitoramento, segurança, auditoria, dashboards, gráficos, dados de teste, importação, histórico, consultas salvas e compartilhamento estão em Ferramentas de banco de dados.

Pelo chat de IA

O chat de IA pode usar seus bancos de dados sem que o módulo esteja aberto. Peça com suas palavras (“que tabelas eu tenho?”, “quantos pedidos foram reembolsados?”) e ele chama estas ferramentas:

FerramentaO que faz
db_list_connectionsLista o motor local e suas conexões salvas, e os projetos dos serviços de nuvem que você conectou como service/project.
db_list_tablesNomes das tabelas de um banco.
db_schemaColunas e tipos de uma tabela ou de todas.
db_queryExecuta um comando somente leitura: SELECT, WITH, EXPLAIN, SHOW ou DESCRIBE. Qualquer coisa que grave dados é recusada.
db_executeExecuta um comando que altera dados ou o esquema. Pede sua aprovação antes, a menos que o chat esteja em Acesso total e Perguntar antes de agir fora deste dispositivo esteja desligado.
  • As ferramentas atuam na última conexão que você abriu, ou no motor local quando você não tem mais nada configurado. O modelo pode indicar outra conexão da lista.
  • Em um banco na nuvem, o chat respeita o interruptor Somente leitura do console e não executa gravações destrutivas: ele entrega o SQL para você executar no console SQL.
  • Os resultados de consulta enviados ao modelo são linhas reais (no máximo 200 para SQL). As regras de mascaramento não se aplicam ao chat. Uma sexta ferramenta somente leitura, db_inspect, lê políticas, a saúde do esquema e SQL salvo: veja Ferramentas de banco de dados.

Grátis e Pro

Tudo nesta página está disponível no plano gratuito, com estes limites (o Pro os remove):

LimiteGrátisPro
Conexões salvas suas1 (não contam o motor local, as contas de provedores e as conexões em memória de Abrir no Database; contam as adicionadas com Abrir… ou Colar em Compartilhamento e as branches do PlanetScale abertas)Ilimitado
Consultas salvas5Ilimitado
Abas do console2Ilimitado
Bancos no motor local1 (postgres)Ilimitado
Tabelas por conexão4 (qualquer motor; criar, importar ou executar CREATE TABLE conta)Ilimitado
Comparar esquemas (SCHEMA_DIFF)Abre o muro do ProIncluído
Backups agendados (SCHEDULED_BACKUP)Abre o muro do Pro. Criar, restaurar, exportar e importar backups é grátis.Incluído
Todo limite acima abre o mesmo muro, com o título Banco de Dados Pro, qualquer um que você atinja. Ele diz “Desbloqueie mais bancos, tabelas e consultas salvas, comparação de esquemas e backups agendados.”, lista Mais bancos, tabelas e consultas salvas, Comparação de schemas (Schema Diff) e Backups automáticos agendados, e tem Continuar com plano básico, que o fecha, e Desbloquear DB Pro, que abre a tela de assinatura. Os dashboards são grátis: não têm limite.

O resto não tem limite de plano: o túnel SSH, todos os formatos de importação e exportação, o diagrama ER, os planos de execução (incluindo Analisar a sério), os recursos de IA, gravar nos seus bancos na nuvem, backups manuais e restauração, a tela do motor, o monitoramento, a segurança, a auditoria e os dashboards.

Os preços e a matriz completa Free / Pro estão em Planos e preços.

Atalhos de teclado

Só com um teclado físico, em um tablet na horizontal, dentro do console:

TeclasAção
Ctrl+EnterExecutar
Ctrl+Shift+EnterExecutar a seleção
Ctrl+T / Ctrl+WNova aba / fechar aba
Ctrl+SSalvar consulta
Ctrl+/Comentar ou descomentar as linhas selecionadas

Privacidade e segurança

  • Sem servidor do PocketCode: os dados vão do app para o motor local, para o seu host (ou seu jump host SSH) ou para a API do provedor. Dois detalhes: o nome de um cluster mongodb+srv:// é resolvido com DNS over HTTPS em dns.google (depois cloudflare-dns.com), e os recursos de IA chamam o provedor que você escolheu. Os seus dados nunca passam por um servidor do PocketCode. Só com o Cloud Sync ligado e Conexões (SSH/DB) marcada os metadados das suas conexões (nome, host, porta, motor e grupo; nunca usuário, senha nem TLS) vão para a sua conta do PocketCode.
  • Onde as coisas ficam: conexões, consultas salvas e pastas, histórico (500), log de auditoria (1.000), abas do console, visões salvas, instantâneos de esquema, impressões digitais de hosts SSH e favoritos são arquivos JSON no armazenamento privado do app, um conjunto por conta. Os projetos de esquema são arquivos separados no mesmo armazenamento privado.
  • As senhas ficam no armazenamento criptografado do Android, por conta. O arquivo da conexão guarda host, porta, banco e usuário, nunca a senha. O app tem o backup na nuvem do Android desligado.
  • O motor local aceita TCP só do próprio celular e sempre com senha (SCRAM-SHA-256). A senha dele é aleatória e guardada criptografada; o motor se recusa a iniciar sem ela. O socket Unix fica dentro do diretório privado do app.
  • IA: nada é enviado a um provedor antes de você aceitar o diálogo de consentimento. O assistente de SQL envia o dialeto e os nomes das suas tabelas e colunas (sem linhas); a explicação do plano envia a consulta e o plano dela; as ferramentas do chat enviam as linhas que leem.
  • Analytics, quando ativado: o módulo informa o tipo de motor, quanto uma consulta demorou e quantas linhas devolveu, o formato e a contagem de linhas da exportação e uma categoria de erro. Nunca o SQL, nomes ou valores.
  • O mascaramento e o bloqueio biométrico estão descritos em Ferramentas de banco de dados.

Limitações

O que não funciona, e por quê, para não pegar você de surpresa:

  • O motor local precisa de um celular ARM de 64 bits. Ele não está incluído em compilações x86 (emuladores, Chromebooks x86).Dispositivo
  • O MariaDB local não está incluído: o código existe, mas nenhum pacote do MariaDB é distribuído, então ele nunca é oferecido.Ainda não
  • O motor não é mantido vivo em segundo plano; o Android pode pará-lo, e os backups agendados são tarefas do WorkManager que o sistema pode adiar.Google Play
  • Não há psql nem pg_isready no app (a biblioteca readline deles é GPL-3).De propósito
  • Scripts: o console envia o editor inteiro de uma vez, e cada execução usa sua própria conexão, então BEGIN em uma execução e COMMIT na seguinte não formam uma transação.De propósito
  • As edições na grade são aplicadas comando por comando. Se uma falhar, as anteriores continuam aplicadas.De propósito
  • MySQL / MariaDB: sem listas de índices, chaves estrangeiras ou triggers, contagens de linhas estimadas, autenticação com mysql_native_password e caching_sha2_password (o caminho completo do segundo só sobre TLS), não ed25519, e nunca LOAD DATA LOCAL INFILE.De propósito
  • Túnel SSH: só encaminhamento de porta local, só para PostgreSQL e MySQL / MariaDB, sem agente, sem saltos encadeados, sem chave com senha (passphrase).De propósito
  • O interruptor SSH aparece no formulário de todos os tipos mas não faz nada fora do PostgreSQL e do MySQL / MariaDB.Ainda não
  • Neon: o SQL pela conta roda em projetos com o banco neondb e o papel neondb_owner padrão.Terceiros
  • Supabase: a API dele não fornece a senha do banco, então uma conexão PostgreSQL de verdade precisa de Usar uma conexão direta e da senha uma vez.Terceiros
  • Contas de provedores precisam de rede e do serviço conectado em Ajustes → Integrações → Serviços conectados (ou pelo Backend Manager). Um host mongodb+srv:// também precisa de DNS over HTTPS.Precisa de rede
  • Diagrama ER, console e planos não existem para MongoDB, Redis, Upstash ou Firestore.De propósito
  • Planos medidos (Analisar a sério) só no dialeto PostgreSQL; planos do MySQL são estimativas e planos do SQLite não têm custos.De propósito
  • Backups cobrem só o PostgreSQL local. Seus servidores e bancos na nuvem mantêm os backups com o provedor deles.De propósito
  • O modo seguro não tem interruptor: está sempre ligado.De propósito
  • Operadores de filtro: BETWEEN tem um único campo de valor.Ainda não
  • Buscar objetos no menu ⋮ da lista de tabelas ainda não mostra resultados.Ainda não
  • A árvore do esquema desenha seções Functions, Sequences, Enums e Dependencies que ficam vazias.Ainda não
  • Use in project: Revelar e Copiar URL não pedem a impressão digital mesmo com o bloqueio biométrico ligado.Ainda não
  • Alguns textos ficam em inglês em todos os idiomas: Running / Stopped no cartão do motor e os passos da primeira execução (“Preparing…”, “Extracting…”, “Setting up…”, “Installing database…”, “Verifying…”, “Ready”).Ainda não

Problemas comuns

Os títulos são as mensagens que o app mostra.

“PostgreSQL não vem nesta compilação para o teu dispositivo.”

O celular não é ARM de 64 bits, então o motor local não pode rodar. Todo o resto do módulo funciona.

“Motor parado” e “Inicie o motor PostgreSQL local para trabalhar com as tabelas.”

O motor está desligado. Toque em Iniciar nessa tela ou no cartão do motor na tela inicial.

O cartão do motor diz Stopped quando eu volto

O Android parou o app em segundo plano. Toque em Iniciar; o PostgreSQL se recupera sozinho se estava gravando. Com Durabilidade ligado, na pior das hipóteses podem faltar os últimos milissegundos de transações confirmadas.

echo $DATABASE_URL não imprime nada no terminal

Inicie o motor e depois abra uma nova sessão de terminal. Uma sessão aberta antes de o motor iniciar não vê as variáveis, e sessões SSH nunca veem.

“O motor local está parado, então não há conexão para entregar. Inicie-o e volte.”

Usar no projeto precisa do motor rodando. Inicie-o e reabra o painel.

“… ainda não pode ser testado a partir da app (sem controlador).”

Testar conexão não tem teste para Turso, Upstash, Atlas e Cloudflare D1. Abra a conta: se a conexão estiver errada, você vai ver ali.

“A chave do servidor SSH mudou. Conexão interrompida…”

A impressão digital do jump host é diferente da salva na primeira vez. Se você reconstruiu o servidor, é esperado; caso contrário, alguém pode estar no meio, então não continue.

Testar conexão falha em um servidor PostgreSQL com TLS

Verificar servidor confere o certificado com as autoridades em que seu celular confia. Se seu servidor usa um certificado próprio, escolha a CA dele com Escolher certificado CA…. Com Apenas cifrar (sem verificar) a conexão é criptografada sem conferir o certificado, e a tela avisa você.

“Aplicadas %1$d de %2$d: …”

Uma edição na fila falhou. As anteriores continuam aplicadas (não há transação). Leia o erro, corrija e aplique o resto de novo.

“A tabela já tem N linhas. Uma coluna NOT NULL precisa de um valor padrão…”

Adicionar coluna fica desabilitado até você dar um Padrão à coluna NOT NULL: as linhas existentes precisam de algo para guardar.

“No se pudieron aplicar los cambios: la tabla no tiene clave primaria utilizable…”

Esta mensagem vem sempre em espanhol. Significa que a tabela não tem uma chave primária utilizável (ou uma linha a tem em NULL), então o app não consegue identificar as linhas com segurança e não aplica nada.

“«Somente leitura» está ativado, então esta gravação não foi enviada. Desative-o acima do editor para executá-la.”

Você está em um banco Neon, Supabase, Turso ou D1. Desligue Somente leitura acima do editor e execute de novo; ele vai pedir confirmação e, para gravações destrutivas, sua impressão digital.

Aparece Operação perigosa em uma consulta em que eu confio

O modo seguro verifica o texto, não a sua intenção. Leia o SQL no diálogo e toque em Executar mesmo assim.

“Não há nenhum fornecedor de IA ligado. Liga um nas definições de IA para que a consulta seja escrita por um modelo.”

A proposta diz Sem ligação — gerado por regras, não por um modelo. Conecte um provedor nas configurações de IA (ou escolha um modelo para Assistente SQL) e toque em Gerar de novo.

“O modelo não devolveu SQL”

O modelo respondeu com um texto que não é SQL, então não há Aceitar. Leia a resposta, escolha outro modelo ou reformule, e toque em Gerar de novo.

“Escreve primeiro uma consulta — o plano explica como seria executada.”

Plano de execução precisa de uma consulta no editor do console. Escreva uma e abra o plano ou toque em Explain.

“pg_stat_statements não está ativo, então não há nada medido para mostrar.”

Ligue Estatísticas de comandos em Ajustes do motor e salve (isso reinicia o motor); depois toque em Ativar em Saúde.

“<engine> runs on a server, so its backups belong to that provider.”

Só o PostgreSQL local pode ter backup pelo celular. Para um servidor ou banco na nuvem, use os backups do provedor dele ou exporte as tabelas.

“O banco “postgres” é o banco de manutenção do motor e não pode ser excluído.”

Excluir banco nunca se aplica a postgres nem ao banco ao qual você está conectado. Troque primeiro para outro banco, se for outro que você quer excluir.

“Deixou de se esperar pela consulta. O servidor pode continuar a executá-la.”

No Neon, Supabase, Turso e D1, Parar não consegue cancelar uma consulta no servidor; só deixa de esperar. Verifique no provedor se ela era pesada.

Aparece um muro Banco de Dados Pro quando adiciono uma conexão, uma aba, uma tabela ou uma consulta salva

O Free permite 1 conexão, 5 consultas salvas, 2 abas de console, 1 banco local e 4 tabelas por conexão. O muro é o mesmo para todos; abrir uma branch do PlanetScale, e Abrir… ou Colar em Compartilhamento (veja Ferramentas de banco de dados), param nessa mesma conexão. O Pro remove os limites.