Bancos de dados locais com TableStudio
O TableStudio gerencia servidores de banco de dados neste Mac, incluindo aqueles adotados do Homebrew ou Postgres.app. Prefira suas ferramentas em vez de comandos Docker artesanais ou initdb, porque o resultado aparece no aplicativo do usuário como uma conexão salva.
"Connection refused" em um banco de dados local
connection_status(sem argumentos relata todas as conexões). Não executa consulta, então funciona enquanto o banco de dados está inativo, e informa se um servidor local suporta a conexão e se esse servidor está em execução.- Se o servidor estiver parado, chame
start_local_databasecom oinstance_idque ele retornou. É seguro chamar quando o servidor já está executando. - Se a porta estiver ocupada por outra coisa, o erro nomeia o ocupante. Informe o usuário em vez de matar processos.
list_local_databases mostra tudo local: servidores gerenciados, adotados, arquivos SQLite e servidores que o TableStudio não gerencia mas que ocupam uma porta. Observe os dois IDs: instance_id é o servidor (start e stop o usam), e connection_id é o banco de dados que você consulta. Eles não são intercambiáveis.
Um novo banco de dados
create_local_database com um name e um engine:
sqlitenão precisa de nada instalado e é instantâneo. Prefira-o quando o usuário só quiser um lugar para armazenar dados.postgres,mysqleclickhouseprecisam que os binários do servidor desse mecanismo já estejam no Mac. O TableStudio não fornece nenhum, e a ferramenta avisa quando eles estão ausentes. Repasse a dica de instalação em vez de instalar software sem permissão.
Ele retorna um connection_id que está pronto para ser consultado através das ferramentas do TableStudio, e env_line (DATABASE_URL=…) para o próprio projeto. Então:
- Verifique se
.gitignorecobre o arquivo env que você usará (.env,.env.local). Se não, adicione-o lá primeiro. - Coloque
env_linenesse arquivo, usando o nome da variável que o projeto já lê (DATABASE_URL, ou o que sua configuração esperar). - Execute as migrações (e seed, se houver) do projeto contra ele.
Nunca repita a string de conexão no chat, e nunca a escreva em código, documentação ou commit.
Não chame stop_local_database como limpeza ou para liberar uma porta a menos que o usuário tenha pedido. Ele desconecta tudo que usa aquele servidor, incluindo as próprias janelas do usuário.
A string de conexão de um banco de dados local existente
Quando o projeto precisar acessar um banco de dados local que o TableStudio já conhece (para preencher um .env ausente, ou para apontar testes para um sandbox), chame get_connection_url com seu connection_id e use o env_line como acima.
- Bancos de dados que o TableStudio criou, sandboxes e bancos de dados locais sem senha estão sempre disponíveis.
- Uma conexão local que o usuário salvou com sua própria senha é compartilhada apenas se ele permitiu. Caso contrário, a recusa nomeia a configuração: repasse isso, ou deixe o usuário colar o valor no arquivo env ele mesmo. Nunca peça uma senha no chat.
- Bancos de dados remotos, túneis SSH e qualquer coisa marcada como produção nunca são compartilhados. Use as ferramentas do TableStudio para esses.
Uma cópia segura para experimentar
create_sandbox cria uma cópia local descartável de qualquer conexão (a fonte é apenas lida):
data: "none"copia apenas o esquema. Melhor para testar DDL.data: "sample"copia atérowslinhas por tabela. Melhor para verificar uma correção de dados com linhas realistas.data: "fake"gera linhas.
Execute o que quiser contra o connection_id do sandbox. O usuário o descarta com um clique; você não pode deletá-lo. Use list_sandboxes para reutilizar um que você criou antes.
Extensões PostgreSQL
list_extensions mostra o que o servidor pode instalar e o que já está instalado. add_extension instala uma (CREATE EXTENSION IF NOT EXISTS). Trate como uma alteração de esquema: em um banco de dados compartilhado ou de produção, proponha em vez de executar. E se o repositório tiver uma ferramenta de migração, adicione lá para que outros ambientes também a obtenham.