Bases de datos locales con TableStudio
TableStudio gestiona servidores de bases de datos en este Mac, incluyendo aquellos adoptados de Homebrew o Postgres.app. Prefiere sus herramientas frente a comandos Docker hechos a mano o initdb, porque el resultado aparece en la aplicación del usuario como una conexión guardada.
"Connection refused" en una base de datos local
connection_status(sin argumentos reporta cada conexión). No ejecuta ninguna consulta, por lo que funciona mientras la base de datos está caída, y te dice si un servidor local respalda la conexión y si ese servidor está en ejecución.- Si el servidor está detenido, llama a
start_local_databasecon elinstance_idque devolvió. Es seguro llamarlo cuando el servidor ya está en ejecución. - Si el puerto está ocupado por otra cosa, el error nombra al ocupante. Informa al usuario en lugar de matar procesos.
list_local_databases muestra todo lo local: servidores gestionados, adoptados, archivos SQLite y servidores que TableStudio no gestiona pero que ocupan un puerto. Nota los dos ids: instance_id es el servidor (start y stop lo usan), y connection_id es la base de datos que consultas. No son intercambiables.
Una nueva base de datos
create_local_database con un nombre y un motor:
sqliteno necesita nada instalado y es instantáneo. Prefiérelo cuando el usuario solo quiera un lugar donde poner datos.postgres,mysqlyclickhousenecesitan que los binarios del servidor de ese motor ya estén en el Mac. TableStudio no incluye ninguno, y la herramienta lo indica cuando faltan. Transmite la pista de instalación en lugar de instalar software sin que te lo pidan.
Devuelve un connection_id listo para consultar a través de las herramientas de TableStudio, y env_line (DATABASE_URL=…) para el propio proyecto. Luego:
- Verifica que
.gitignorecubra el archivo env que usarás (.env,.env.local). Si no lo hace, añádelo allí primero. - Coloca
env_lineen ese archivo, usando el nombre de variable que el proyecto ya lee (DATABASE_URL, o lo que sea que su configuración espere). - Ejecuta las migraciones del proyecto (y el seed, si lo tiene) contra ella.
Nunca repitas la cadena de conexión en el chat, y nunca la escribas en código, documentación o un commit.
No llames a stop_local_database como limpieza o para liberar un puerto a menos que el usuario lo haya pedido. Desconecta todo lo que usa ese servidor, incluyendo las ventanas del propio usuario.
La cadena de conexión de una base de datos local existente
Cuando el proyecto necesite acceder a una base de datos local que TableStudio ya conoce (para completar un .env faltante, o para apuntar pruebas a un sandbox), llama a get_connection_url con su connection_id y usa env_line como arriba.
- Las bases de datos creadas por TableStudio, los sandboxes y las bases de datos locales sin contraseña siempre están disponibles.
- Una conexión local que el usuario guardó con su propia contraseña solo se comparte si él lo permitió. De lo contrario, el rechazo nombra la configuración: transmítelo, o deja que el usuario pegue el valor en el archivo env él mismo. Nunca pidas una contraseña en el chat.
- Las bases de datos remotas, los túneles SSH y cualquier cosa etiquetada como producción nunca se comparten. Usa las herramientas de TableStudio para esas.
Una copia segura para experimentar
create_sandbox crea una copia local desechable de cualquier conexión (la fuente solo se lee):
data: "none"copia solo el esquema. Ideal para probar DDL.data: "sample"copia hastafilasfilas por tabla. Ideal para verificar una corrección de datos con filas realistas.data: "fake"genera filas.
Ejecuta lo que quieras contra el connection_id del sandbox. El usuario lo descarta con un clic; tú no puedes eliminarlo. Usa list_sandboxes para reutilizar uno que hayas creado antes.
Extensiones de PostgreSQL
list_extensions muestra qué puede instalar el servidor y qué ya está instalado. add_extension instala una (CREATE EXTENSION IF NOT EXISTS). Trátalo como un cambio de esquema: en una base de datos compartida o de producción, propónlo en lugar de ejecutarlo. Y si el repositorio tiene una herramienta de migraciones, añádelo allí para que otros entornos también lo reciban.