Herramientas de base de datos
La hoja Herramientas del módulo Database reúne 25 herramientas en seis secciones (Explorar, Consultar, Diseñar, Datos, Servidor y Seguridad). Las conexiones NoSQL abren en cambio pantallas propias: un explorador de claves, una CLI y un monitor para Redis, un explorador de documentos y un constructor de consultas para Firestore, y la lista de colecciones para MongoDB. Esta página cuenta qué hace cada una, con qué conexiones funciona y qué no puede hacer. Las conexiones, el PostgreSQL local, la consola SQL, la edición de datos y las copias de seguridad están en la página Database. Casi nada de esto depende del plan; los pocos límites están en una tabla cerca del final.
Qué es y cómo se abre
Todo lo de esta página vive dentro del módulo Database, que se abre desde Herramientas → Database (la página Database enumera todas las formas de entrar). Las herramientas están en una sola hoja, en un orden fijo, y la hoja solo muestra las que tienen sentido para la conexión abierta: una herramienta que no podría hacer lo que dice se oculta, no se deja con un aviso.

Dónde están las herramientas
| Dónde estás | Qué tocas | Qué obtienes |
|---|---|---|
| Móvil o tableta, en vertical | El icono de rejilla (Herramientas) a la derecha de la cabecera. | Una hoja inferior con el buscador, la fila Frecuentes y las herramientas por sección. |
| Móvil, en horizontal | El icono de rejilla (Herramientas) en el raíl estrecho que ocupa el lugar de la cabecera. | La misma hoja. |
| Tableta, en horizontal | Nada: la columna de herramientas está siempre a la vista. | Las mismas herramientas como columna fija de 280 dp. Plegar la columna de herramientas la reduce a iconos (72 dp). Cada sección se pliega por separado, y la columna se pliega sola cuando la ventana es demasiado estrecha. |
| La pantalla de inicio (Database Manager) | Aquí no hay cabecera, así que no hay hoja de herramientas. Tiene dos atajos propios: Monitoreo y Diseñador de Esquemas. | El Monitor y el diseñador de esquema (no necesita conexión). |
Dentro de la hoja
- El título es Herramientas. Debajo va el nombre de la conexión abierta, o Sin conexión seleccionada.
- Buscar herramientas filtra por el nombre de la herramienta en tu idioma. Sin coincidencias dice Ninguna herramienta se llama así.
- Frecuentes es una fila arriba del todo, oculta mientras buscas. Aparece cuando has abierto herramientas 3 veces en total y entonces muestra hasta 4, las que más abres. Las cuentas se guardan en el dispositivo.
- Cada fila tiene un icono, el nombre de la herramienta, una línea de descripción y, en el plan Gratis, una insignia PRO cuando la herramienta va ligada a una función Pro. Un punto marca la herramienta cuya pantalla está abierta.
- El orden nunca cambia con el uso. Las secciones siguen el orden en que las usarías (mirar, preguntar, cambiar la forma, mover datos, servidor, permisos), así que una herramienta se queda donde la dejaste.
Las 25 herramientas
Seis secciones, 25 herramientas. La última columna dice cuándo se muestra la herramienta y qué hace el plan con ella. «Página Database» significa que esa pantalla se explica allí.
Explorar (3)
| Herramienta | Qué abre | Se muestra cuando · plan |
|---|---|---|
| Tablas | Las tablas de la conexión; en MongoDB, sus colecciones. | Cualquier conexión. Vacía en Redis y Firestore. |
| Árbol de esquema | Tablas, columnas, índices y claves en un árbol (página Database). | Conexión SQL con al menos una tabla. |
| Diagrama ER | Las relaciones entre tablas (página Database). | Conexión SQL con al menos una tabla. |
Consultar (6)
| Herramienta | Qué abre | Se muestra cuando · plan |
|---|---|---|
| Consola SQL | La consola (página Database). | Conexión SQL. |
| Historial de consultas | Todo lo que ejecutaste desde la consola (ver Historial y consultas guardadas). | Conexión SQL. |
| Consultas guardadas | Tus consultas guardadas y sus carpetas. | Conexión SQL. Gratis: 5 consultas guardadas. |
| Plan de ejecución | El plan de la consulta de la consola (página Database). | Conexión SQL. |
| Gráficas | Una gráfica del último resultado de la consola. | Conexión SQL. |
| Paneles | Tus paneles de widgets. | Cualquier conexión, o el motor local mientras está en marcha. Sin límite de plan. |
Diseñar (4)
| Herramienta | Qué abre | Se muestra cuando · plan |
|---|---|---|
| Diseñador de esquema | El diseñador de esquema (página Database). | Siempre, incluso sin conexión. |
| Tabla nueva | El formulario para crear una tabla (página Database). | Conexión SQL. Gratis: 4 tablas por base de datos. |
| Comparar esquemas | El diff de esquema contra una instantánea guardada (página Database). En un proyecto de PlanetScale abre en su lugar el diff del deploy request. | Conexión SQL. Pro para el diff de instantáneas (en Gratis lleva PRO); el diff de PlanetScale es gratis. |
| Importar esquema | Trae la base de datos abierta al diseñador (página Database). | Conexión SQL con al menos una tabla. |
Datos (4)
| Herramienta | Qué abre | Se muestra cuando · plan |
|---|---|---|
| Datos de prueba | El Generador de Datos para la tabla abierta. | Conexión SQL con al menos una tabla, y hay que tener una tabla abierta. |
| Importar | El selector de ficheros del sistema y luego la vista previa de importación. | Conexión SQL. Gratis: no cuando la base ya tiene 4 tablas. |
| Exportar | La hoja de exportación de la tabla abierta (página Database). | Cualquier conexión. Sin tabla abierta no hace nada. |
| Copias de seguridad | La pantalla de copias de seguridad (página Database). | Cualquier conexión. Solo programar es Pro. |
Servidor (5)
| Herramienta | Qué abre | Se muestra cuando · plan |
|---|---|---|
| Monitor | La pantalla Monitoreo. | Cualquier conexión. |
| Ajustes del motor | La pantalla del motor, pestaña Salud (página Database). | El PostgreSQL local, incluso parado. |
| Extensiones | La pantalla del motor, pestaña Extensiones (página Database). | El PostgreSQL local mientras está en marcha. |
| Registro del servidor | La pantalla del motor, pestaña Registro (página Database). | El PostgreSQL local, incluso parado. |
| Base de datos nueva | Un diálogo para crear otra base de datos dentro del motor local. | El PostgreSQL local mientras está en marcha. Gratis: 1 base de datos; lleva PRO. |
Seguridad (3)
| Herramienta | Qué abre | Se muestra cuando · plan |
|---|---|---|
| Seguridad | Cinco pestañas: Enmascarado, Roles, Políticas, Permisos y Biométrica. | Cualquier conexión. |
| Registro de auditoría | Lo que ejecutó el módulo, con Volver a ejecutar. | Cualquier conexión. |
| Compartir | Copiar una conexión o una consulta, guardar, abrir o pegar la configuración. | Cualquier conexión. |
Qué herramientas muestra cada conexión
La hoja cuenta lo que puede hacer la conexión abierta:
| Conexión | Herramientas en la hoja |
|---|---|
| El PostgreSQL local, en marcha, con tablas | Las 25. |
| El PostgreSQL local, parado | Extensiones y Base de datos nueva se ocultan. Las herramientas que necesitan tablas aparecen solo cuando la conexión las tiene. |
| Servidores PostgreSQL o MySQL, Neon, Supabase, PlanetScale, Turso, Cloudflare D1 | 21: las de Explorar, Consultar, Diseñar y Datos, Monitor y las tres de Seguridad. Sin Ajustes del motor, Extensiones, Registro del servidor ni Base de datos nueva; las que necesitan tablas esperan a que haya alguna. |
| Redis, Upstash abierta como Redis, Cloud Firestore, un servidor MongoDB | 9: Tablas, Paneles, Diseñador de esquema, Exportar, Copias de seguridad, Monitor, Seguridad, Registro de auditoría y Compartir. Las nueve se pensaron para SQL; lee la nota de abajo. |
Otras formas de entrar
- Una conexión NoSQL se salta la hoja. Abrir una conexión Redis muestra el explorador de claves, abrir Cloud Firestore muestra el explorador de documentos y abrir un servidor MongoDB muestra sus colecciones. No están en el catálogo porque cada una es la pantalla de su conexión.
- Desde el Backend Manager, una acción Abrir en Database va directa a un proyecto, a sus tablas, a la consola SQL, a Seguridad → Políticas, a la salud del esquema de Supabase (dentro de Monitor) o al diff de esquema. Si el servicio no está conectado, PocketCode lo dice en vez de abrir una pantalla vacía.
- Desde la lista de tablas, el menú ⋮ tiene Importar CSV (admite seis formatos) y, solo en el motor local, Importar desde Portapapeles y Diff de Esquema.
No puedes, y por qué
- Ver las herramientas que no encajan con la conexión abierta: se ocultan, no se atenúan.A propósito
- Reordenar las herramientas o fijar las tuyas: el orden es fijo para que una herramienta nunca se mueva. Solo cambia la fila Frecuentes con el uso.A propósito
- Abrir la hoja de herramientas desde la pantalla de inicio: no tiene cabecera. Usa sus dos atajos, o abre antes una conexión.A propósito
Mapa de pantallas
Una fila por pantalla de las herramientas de esta página. Las pantallas de las demás herramientas (la consola, el visor de datos, las copias…) están en la página Database.
| Pantalla | Cómo llegas | Qué puedes hacer |
|---|---|---|
| Hoja y columna de herramientas | El icono de rejilla de la cabecera (vertical), el raíl (móvil horizontal) o la columna fija (tableta horizontal). | Buscar entre las 25 herramientas, reabrir las Frecuentes e ir a cualquier pantalla. |
| Explorador Redis | Abre una conexión Redis, o una base de Upstash que devuelva contraseña de Redis. | Filtrar claves, leer su tipo, TTL, tamaño y una vista previa, cambiar un TTL, borrar una clave, cargar más, abrir la CLI y el monitor. |
| Redis CLI | El icono de terminal del Explorador Redis. | Ejecutar cualquier comando, usar los cuatro atajos y leer las respuestas en formato redis-cli; los comandos peligrosos preguntan antes. |
| Monitor Redis | El icono de monitor del Explorador Redis. | Ver memoria, clientes, operaciones por segundo y versión, y los mensajes publicados en cualquier canal. |
| Explorador Firestore | Abre la conexión Cloud Firestore. | Elegir proyecto, explorar por ruta, leer documentos y, en tu propio proyecto, editarlos y borrarlos. |
| Consulta Firestore | El icono de filtro del Explorador Firestore. | Armar una consulta con Cláusulas WHERE, Ordenar por y Límite, y leer los resultados. |
| Colecciones de MongoDB | Abre una conexión a un servidor MongoDB. | Leer las colecciones de la base de datos, con un recuento cada una. |
| Monitoreo | Monitor en Herramientas, o Monitoreo en la pantalla de inicio. | Cuatro pestañas (Sesiones, Lentas, Índices, Alertas), más Salud del esquema en Supabase o Consultas lentas en PlanetScale. |
| Paneles | Paneles en Herramientas. | Crear paneles de widgets de consultas con actualización automática, y leer la pestaña Servidor del motor. |
| Gráficos | Gráficas en Herramientas, tras un resultado de la consola con al menos 2 columnas. | Dibujar una gráfica de barras, líneas, tarta, dispersión o mapa de calor; exportarla como PNG o añadirla a un panel. |
| Generador de Datos | Datos de prueba en Herramientas, con una tabla abierta. | Insertar filas generadas, o filas que escribe un modelo de IA a partir de tu descripción. |
| Vista Previa de Importación | Importar en Herramientas, o ⋮ → Importar CSV en la lista de tablas. | Previsualizar un fichero CSV, TSV, JSON, NDJSON, SQL o XLSX e importarlo a una tabla. |
| Historial de Consultas | Historial de consultas en Herramientas. | Leer lo que ejecutaste, recargar una consulta en la consola, vaciar la lista. |
| Consultas Guardadas | Consultas guardadas en Herramientas. | Recargar, borrar y agrupar consultas guardadas en carpetas; leer los snippets de Supabase. |
| Seguridad | Seguridad en Herramientas, o Abrir en Policies desde Salud del esquema. | Cinco pestañas: reglas de enmascarado, roles, políticas de row level security, GRANT y REVOKE, y el bloqueo biométrico. |
| Registro de Auditoría | Registro de auditoría en Herramientas. | Leer lo que ejecutó el módulo y devolver una sentencia a la consola. |
| Compartir | Compartir en Herramientas. | Copiar una conexión o una consulta, guardar, abrir o pegar la configuración. |
| Proyectos | Abre una conexión de cuenta en la nube (Neon, Supabase, PlanetScale, Atlas, Turso, D1 o Upstash). | Buscar y abrir los proyectos de la cuenta. |
| Ficha del proyecto | Toca un proyecto de Neon, PlanetScale, Turso o Supabase. | Leer ramas, deploy requests, esquema, cadena de conexión, regiones o pooler, y ver las tablas. |
| Diff de Esquema (PlanetScale) | Comparar esquemas con un proyecto de PlanetScale abierto. | Leer las sentencias que PlanetScale ejecutará cuando se despliegue el deploy request. |
MongoDB
Una conexión a un servidor MongoDB (host, puerto, base de datos, usuario, contraseña y TLS cuando el servidor lo exige) abre la lista de colecciones de la base. Probar conexión hace un ping de verdad: abre el socket, negocia TLS y completa el login SCRAM, así que un resultado verde significa que las credenciales funcionan. PocketCode habla con MongoDB con su propio cliente, porque el driver oficial de Java necesita una biblioteca que Android no trae, y resuelve las direcciones mongodb+srv:// con DNS sobre HTTPS (Google o Cloudflare). Un clúster de Atlas aparece bajo su cuenta y abre un formulario de conexión: escribe el usuario y la contraseña de la base (Atlas no los da por su API) y guarda.
Puedes
- Ver las colecciones de la base de datos que nombra la conexión (
testcuando el campo está vacío). Cada una tiene un recuento que la app rotula filas; el número es el de documentos de la colección. - Leer los usuarios de base de datos de un proyecto de Atlas, de solo lectura, en Seguridad → Roles (con un clúster seleccionado).
- Copiar la conexión sin su contraseña con Compartir.
No puedes, y por qué
- Leer los documentos de una colección: al tocar una colección se abre el visor de datos sin columnas y sin filas. Tampoco hay shell, ni constructor de agregaciones, ni pantalla para crear colecciones, gestionar índices o exportarlas.Aún no
- Obtener un recuento de todas las colecciones: solo las 40 primeras de la lista lo tienen, para que la lista sea ágil. Las demás no muestran número, lo que no es lo mismo que cero.A propósito
- Leer desde la cuenta la contraseña de base de datos de Atlas: Atlas no la da por su API, así que la escribes en el formulario de conexión.Terceros
Redis
Una conexión Redis (host, puerto, contraseña, un usuario opcional, TLS y el número de base de datos, 0 por defecto) abre el explorador de claves. Probar conexión envía un PING de verdad. PocketCode habla con Redis con su propio cliente, sobre TLS cuando la conexión lo pide. Una base de Upstash se abre aquí como una base Redis de verdad cuando Upstash devuelve su contraseña; si solo da un token REST, se abre por REST como una única tabla de solo lectura, sin explorador de claves.
Explorador de claves
Explorador Redis lista las claves página a página con SCAN, que no bloquea el servidor como lo haría KEYS. Cada clave es una tarjeta, y la cabecera indica cuántas claves hay cargadas.
Puedes
- Filtrar con Buscar claves…. Cuando dejas de escribir durante 350 ms, la app envía
SCAN … MATCH *texto*, una coincidencia por subcadena que hace el servidor. - Leer cada clave: un icono y una insignia con su tipo (
string,list,set,sorted set,hash,stream, u otro para un tipo de módulo como RedisJSON), TTL: (los segundos que quedan, Sin caducidad o La clave ya no existe; en rojo cuando quedan de 1 a 60 segundos) y su tamaño en memoria, o tamaño no informado. - Tocar una clave para abrir una vista previa de su valor, cortada a 200 caracteres (hasta 40 líneas en pantalla). Por tipo: un string lee
GETRANGE 0..199, una lista sus 10 primeros elementos, un set 10 miembros al azar, un sorted set 10 elementos con puntuación, un hash los 10 primeros campos (HSCAN) y un stream 3 entradas. - Cambiar un TTL: el icono de temporizador (Establecer TTL), los segundos en TTL (segundos) y Guardar. Un número negativo quita la caducidad (
PERSIST). - Borrar una clave: el icono de papelera (Eliminar). Pasa por el diálogo Operación Peligrosa con
DEL <clave>; Ejecutar de Todos Modos confirma. La app te dice si el servidor borró la clave o ya no existía. - Tocar Cargar más para traer la página siguiente. Una página son 200 claves, y puede hacer hasta 40 rondas de
SCANde 250 antes de parar. - Abrir la Redis CLI (icono de terminal) o el Monitor Redis (icono de monitor).
No puedes, y por qué
- Cambiar un valor, crear una clave o renombrarla desde la pantalla: no hay control para ello. Usa la CLI (
SET,RENAME…).Aún no - Elegir la base de datos lógica (
SELECT n) en el explorador: sale del número de base de datos guardado en la conexión.A propósito - Ver el tamaño de una clave cuando el servidor no soporta
MEMORY USAGEo la ACL lo prohíbe: la tarjeta dice tamaño no informado en vez de dibujar 0 B.Terceros - Leer un valor entero en el explorador: la vista previa se corta a los 200 caracteres. Usa la CLI para el resto.A propósito
CLI
Redis CLI envía al servidor lo que escribes tal cual e imprime la respuesta como lo hace redis-cli. El historial en pantalla guarda las últimas 200 entradas.
Puedes
- Escribir un comando en el campo (PING, GET clave, SET clave valor…) y ejecutarlo con el botón de reproducir (Ejecutar).
- Usar los cuatro atajos:
PING,KEYS *,INFOyDBSIZE.KEYS *pide confirmación como cualquier comando que pueda bloquear el servidor. - Confirmar los comandos peligrosos en el mismo diálogo Operación Peligrosa, con el motivo en español. Son:
FLUSHALL,FLUSHDBySWAPDB; borrados y sobrescrituras (DEL,UNLINK,RENAME,GETDEL,MOVE,COPY,LREM,SREM,HDEL,ZREM,SPOP,LPOP,RPOP,XDEL,XTRIM…, los comandos*STOREySORT … STORE); administración del servidor (CONFIG,ACL,CLIENT,DEBUG,SHUTDOWN,REPLICAOF,CLUSTER,SCRIPT,FUNCTION,MODULE,RESET…, salvo subcomandos de solo lectura comoCONFIG GEToACL WHOAMI); comandos que bloquean el servidor (KEYS,MONITOR,BLPOP…); yEXPIRE,PEXPIREyEXPIREAT.
No puedes, y por qué
- Guardar comandos favoritos o scripts: no hay control para ello.Aún no
- Suscribirte a canales desde la CLI: una conexión suscrita no puede ejecutar comandos normales. El monitor abre una conexión propia para eso.A propósito
Monitor
Monitor Redis arranca solo al abrirlo. Cada 2 segundos pide al servidor INFO y, en una segunda conexión propia, se suscribe a todos los canales (PSUBSCRIBE *). En un servidor callado ves los contadores y Conectado. Todavía no se ha publicado nada en ningún canal.
Puedes
- Leer Memoria, Clientes, Ops (operaciones por segundo, con /s) y Versión.
- Ver Eventos: cada mensaje publicado con su canal, su texto (cortado a 500 caracteres) y la hora. La lista guarda los últimos 200.
- Pararlo con Parar y volver a arrancarlo con Iniciar Monitor.
No puedes, y por qué
- Ver los comandos que ejecutan otros clientes: el monitor no usa el comando
MONITORde Redis, soloINFOy los mensajes publicados.A propósito - Ver cómo cambiaron las cifras con el tiempo: solo se muestran los valores actuales.Aún no
Cloud Firestore
La conexión Cloud Firestore aparece en la lista de conexiones cuando has configurado tu propio proyecto de Firebase (en Integraciones) o has conectado Firebase en el Backend Manager. Hay dos rutas a los datos, y lo que puedes hacer depende de cuál esté abierta.
| Ruta (como la nombra la cabecera) | Qué obtienes |
|---|---|
| Solo lectura · conexión de Google del Backend Manager | Usa tu sesión de Google del Backend Manager. Eliges un proyecto de Firebase (Elige un proyecto de Firebase, luego Cambiar de proyecto), y lista las colecciones raíz y las subcolecciones de un documento. Lee la base (default) del proyecto con los permisos de tu cuenta de Google, y nunca escribe. |
| Proyecto configurado en Ajustes → Integraciones → Firebase | Usa las claves de tu propio proyecto (Project ID, App ID y API key, de su google-services.json) a través del SDK de cliente de Firebase, como una app de Firebase aparte que nunca es el proyecto de PocketCode. Lee, edita y borra documentos bajo las reglas de seguridad de tu Firestore. No puede listar colecciones, así que escribes la ruta. |
Explorador
Explorador Firestore muestra un nivel cada vez: la raíz (Colecciones), una colección (sus documentos) o un documento (sus Subcolecciones). La ruta se muestra arriba.
Puedes
- Elegir proyecto cuando tu cuenta de Google tiene varios: Elige un proyecto de Firebase. La cabecera muestra Proyecto: … y Cambiar de proyecto.
- Escribir una ruta en Ruta de colección (por ejemplo
users) y tocar la flecha (Abrir ruta). Una colección tiene un número impar de segmentos (users,users/alice/posts) y un documento un número par (users/alice). - Tocar un documento para abrir sus subcolecciones (ruta de Google). El gesto atrás sube un nivel antes de salir de la pantalla.
- Leer documentos: hasta 50 por colección, cada tarjeta con el id del documento, sus 4 primeros campos y +N campos más.
- En tu propio proyecto, editar un documento con el lápiz (Editar): Editar Documento abre un campo JSON y Guardar lo escribe. Borrar uno con el icono de papelera; pasa por el diálogo Operación Peligrosa con
DELETE <ruta>. - Tocar el icono de filtro (Consulta Firestore) para armar una consulta.
No puedes, y por qué
- Listar las colecciones raíz, o las subcolecciones de un documento, en la ruta del SDK: el SDK de cliente de Firestore no tiene una llamada para ello. Escribe la ruta de una colección.Terceros
- Editar o borrar en la ruta de Google: es de solo lectura, así que los botones de editar y borrar no se dibujan. Configura el proyecto en Integraciones para escribir.A propósito
- Crear un documento nuevo desde el explorador: solo edita y borra los que ya existen.Aún no
- Ver más de 50 documentos de una colección en el explorador: usa Consulta Firestore, que llega hasta 500.A propósito
- Leer una base de Firestore con nombre: solo se lee
(default), en las dos rutas.A propósito
"age": "31"), y Guardar escribe ese JSON de vuelta con set(), que reemplaza el documento entero. Un número, booleano, mapa o lista que no vuelvas a escribir como valor JSON se guarda como texto. Vuelve a escribirlos ("age": 31) antes de guardar, o edita el documento en la consola de Firebase.Consulta
Consulta Firestore arma una consulta real que ejecuta Firestore. No es un filtro sobre los documentos que ya están en pantalla.
Puedes
- Escribir la ruta de la Colección. Si la dejas vacía, se usa la ruta que estabas explorando.
- Tocar Agregar Cláusula bajo Cláusulas WHERE. Cada cláusula tiene un Campo, un operador (
==,!=,<,<=,>,>=,array-containsoin) y un Valor. Un icono quita una cláusula. - Los valores se tipan solos:
null,true,false, enteros, decimales y fechas ISO (2026-10-04o2026-10-04T10:00:00Z) se reconocen, y todo lo demás es texto. Pon el valor entre comillas ('123') para forzar texto. Conin, separa los valores con comas y entrecomilla el que lleve una. - Fijar Ordenar por (un campo) y Límite (25 por defecto; la app lo mantiene entre 1 y 500).
- Tocar Ejecutar Consulta. Bajo documentos ves el recuento y una tarjeta por resultado con todos sus campos.
No puedes, y por qué
- Ordenar de forma descendente: la pantalla no tiene interruptor para ello, así que los resultados siempre salen en orden ascendente.Aún no
- Consultar un grupo de colecciones (todas las colecciones con un nombre dado): no hay control para ello.Aún no
- Combinar desigualdades sobre campos distintos, u ordenar por otro campo, sin un índice: Firestore exige un índice compuesto, y su error, con el enlace para crearlo, se muestra tal cual.Terceros
Monitor
Abre Monitoreo desde Monitor en Herramientas o desde Monitoreo en la pantalla de inicio. El icono de actualizar de la cabecera recarga todo (y, en Supabase, carga Salud del esquema). Si se han disparado alertas, una franja roja arriba las lista: N alertas disparadas, las 3 primeras, y Descartar.
| Pestaña | Qué muestra |
|---|---|
| Sesiones | Latencia y contadores de la conexión, las sesiones del servidor y las consultas que ejecutó esta app. |
| Lentas | Tus sentencias correctas más lentas, sacadas del registro de auditoría. |
| Índices | Los índices de las tablas, con una estimación de su uso (dialecto PostgreSQL). |
| Alertas | Reglas que defines, comprobadas al abrir o actualizar el monitor. |
| Salud del esquema | Solo Supabase: los avisos de seguridad y rendimiento del proyecto. |
| Consultas lentas | Solo PlanetScale: las consultas que más leen, según Insights. |
Sesiones
La primera pestaña tiene tres secciones.
Puedes
- Conexión: Latencia (los milisegundos de un
SELECT 1en tu conexión, medidos al abrir o actualizar el monitor), Conexiones (las conexiones abiertas a la base, solo en el PostgreSQL local), Consultas por segundo (siempre —), Queries Hoy y Tiempo Prom. (de las consultas que ejecutaste en esta app desde medianoche). - Sesiones del servidor, solo en el PostgreSQL local: cada sesión de cliente de
pg_stat_activity(la del propio monitor no sale) con supid, estado, evento de espera, Base de datos, Aplicación y su consulta (los primeros 200 caracteres). Dos iconos actúan sobre una sesión: Cancelar consulta (pg_cancel_backend: detiene la consulta y mantiene la sesión) y Terminar sesión (pg_terminate_backend: cierra la conexión). - Consultas de esta aplicación: las consultas de la sesión actual, cada una con su estado y duración. El icono Cancelar Query cancela una que está en curso y Limpiar Completadas vacía las terminadas.
- Abierto desde la pantalla de inicio, sin conexión, las sesiones salen del motor local.
No puedes, y por qué
- Ver las sesiones de Neon, Supabase, MySQL, Redis, Firestore o MongoDB: el módulo solo las lee del PostgreSQL embebido. En cualquier otro sitio dice «… no informa de las sesiones abiertas — solo lo hace el motor embebido.»A propósito
- Obtener consultas por segundo: no se mide, así que la tarjeta muestra —.Aún no
Lentas
El registro de lentas se construye con tu registro de auditoría: tus sentencias correctas con una duración igual o superior al umbral, las 50 más lentas. No es el registro de consultas lentas del servidor.
Puedes
- Elegir el Umbral lento con los chips 100 ms, 500 ms, 1000 ms y 5000 ms (500 por defecto). La lista se reconstruye al abrir el monitor o al tocar el icono de actualizar, así que actualiza después de cambiar el umbral.
- Cada entrada muestra su duración (en rojo por encima de 2000 ms), la hora, el SQL (hasta 200 caracteres, 3 líneas) y la tabla.
- Sin nada que mostrar dice Sin queries lentas detectadas.
No puedes, y por qué
- Conservar el umbral al reiniciar la app: no se guarda.Aún no
- Ver sentencias lentas que no vinieron de esta app: el registro se hace con tus propias entradas de auditoría, no con las del servidor.A propósito
Índices
Los índices de las tablas de la conexión, solo para conexiones con dialecto PostgreSQL: el motor local, Neon, Supabase y los servidores PostgreSQL.
Puedes
- Leer cada índice: su nombre, su tabla y sus columnas, una insignia UNIQUE si es único y N usos (est.).
- N usos (est.) es una estimación, no un contador: cuenta las entradas de tu registro de auditoría para esa tabla cuyo SQL menciona la primera columna del índice. La insignia es verde por encima de 0.
- Sin ninguno dice Sin índices.
No puedes, y por qué
- Ver índices en MySQL, SQLite u otros motores: la pestaña se queda vacía.Aún no
Alertas
Las reglas de alerta se guardan en el dispositivo y se comprueban cada vez que abres o actualizas el monitor.
Puedes
- Tocar Agregar Alerta, ponerle un Nombre de Alerta, elegir un Tipo de Alerta y un Umbral. Activar o desactivar una regla, o borrarla, con sus controles. N reglas indica cuántas hay.
- Una alerta se dispara cuando el valor actual supera el umbral. Las alertas disparadas aparecen en la franja roja de arriba del monitor.
No puedes, y por qué
- Recibir una notificación con la app cerrada, o mientras no estás mirando el monitor: nada se ejecuta en segundo plano. Las reglas se comprueban solo al abrir o actualizar.Aún no
- Alertar sobre Database Size donde el motor no informa de un tamaño: esa regla se omite, no se dispara con un cero.Terceros
| Tipo de alerta | Qué mide |
|---|---|
| Table Row Count (rows) | El número de filas de la tabla abierta, cuando se conoce el recuento. |
| Query Duration (ms) | El tiempo medio de las consultas que ejecutaste desde esta app desde medianoche. |
| Database Size (MB) | El tamaño de la base abierta. Solo se comprueba donde el motor lo informa: conexiones con dialecto PostgreSQL, Turso y Cloudflare D1. |
| Slow Queries Count (queries) | Cuántas entradas tiene el registro de lentas con el umbral actual. El registro guarda 50 como máximo, así que un umbral de 50 o más nunca dispara. |
| Error Rate (%) | Las sentencias fallidas como porcentaje de todas las entradas del registro de auditoría, no solo las de hoy. |
Salud del esquema (Supabase)
Solo en un proyecto de Supabase, y aparece después de tocar el icono de actualizar del monitor (o de llegar con una acción Abrir en Database que apunte a la salud del esquema). Muestra, de solo lectura, lo que Supabase ya sabe que está mal en el proyecto: los avisos de seguridad y de rendimiento, en dos secciones.
Puedes
- Leer cada hallazgo: su nivel, su título, la entidad (Afecta a), la remediación y un enlace Más información.
- En un hallazgo de row level security, tocar Abrir en Policies para saltar a Seguridad → Políticas.
No puedes, y por qué
- Arreglar un hallazgo desde aquí: la pestaña solo lee los avisos de Supabase.A propósito
Consultas lentas (PlanetScale)
Solo en un proyecto de PlanetScale, cuando Insights tiene datos. «Insights de PlanetScale: las consultas que más leen o escanean en esta rama.»
Puedes
- Leer cada consulta con su tabla, su Tiempo, sus Veces, las Filas leídas y las Filas examinadas, tal como las da la API (el tiempo va en microsegundos).
No puedes, y por qué
- Ver las cifras de PlanetScale en milisegundos o mezcladas con la pestaña Lentas: las dos fuentes usan unidades distintas, así que van por separado.A propósito
Paneles y gráficas
Los Paneles guardan consultas juntas como widgets, y Gráficas dibuja el último resultado de la consola. Ninguno tiene límite de plan. Los paneles se guardan en el dispositivo como la consulta y su forma, nunca como el resultado: los números se vuelven a leer del motor cada vez que abres uno.
Paneles
Paneles abre tus paneles como pestañas. El icono + (Panel nuevo) crea uno (Nombre del panel). Sin ninguno dice «Los paneles que crees aparecerán aquí.»
Puedes
- Cambiar de panel con las pestañas. De cada uno puedes Renombrar o Borrar; borrar pregunta «¿Borrar «X» y sus N widgets? No se puede deshacer.»
- Leer los widgets en 1 columna en un móvil en vertical, 2 columnas en el resto y 3 columnas en pantallas de 1.200 dp de ancho o más. En una rejilla de una columna, un widget de 2 columnas simplemente llena la fila.
- Actualizar un widget con su propio botón; cada uno muestra cuándo se leyó (Leído a las …).
- Un widget también puede decir: La conexión con la que se creó este widget ya no está disponible., Este widget no tiene consulta., La consulta no devolvió ninguna fila., No hay ninguna columna numérica que pintar. o el propio error del motor.
No puedes, y por qué
- Llevar un panel a otro dispositivo: solo viven en este.Aún no
Widgets
Un widget es una consulta, una forma, un ancho y un intervalo de actualización. Añades uno desde el icono de gráfica (Añadir al panel) de la cabecera de la consola, que solo se activa con un resultado correcto, o desde el mismo icono en Gráficas.
Puedes
- En la hoja, pon el Título del widget, mira el SQL que se guardará (se muestra ahí, no se edita), elige el Panel de destino o Panel nuevo, y elige la Forma, el Ancho y la Actualización automática.
- Ancho: 1 columna o 2 columnas. Actualización automática: Desactivada, o cada 5, 15, 30, 60 o 300 segundos mientras el panel está en pantalla.
- Cada widget tiene un título, un botón de actualizar y un menú (Opciones del widget) con Editar widget, Subir, Bajar y Borrar. Editar widget cambia el título, el SQL, la forma, el ancho y el intervalo.
No puedes, y por qué
- Ejecutar una sentencia que escribe: un widget se ejecuta solo y por intervalo, así que solo corren
SELECT,WITH,EXPLAIN,SHOWyDESCRIBE. Una sentencia que escribe queda sin ejecutar con «No se ejecuta: UPDATE escribe, y un panel solo ejecuta consultas de lectura.»A propósito - Usar parámetros
:nombreen un widget: no tiene de dónde sacar el valor cuando se actualiza solo.A propósito - Arrastrar widgets para reordenarlos: usa Subir y Bajar.A propósito
- Actualizar más rápido que cada 5 segundos: un widget que repite la consulta cada segundo es un bucle de
SELECTsobre la base de alguien.A propósito - Usar un widget en Redis, MongoDB o Firestore: no tienen SQL, así que el widget muestra el error del motor.A propósito
| Forma | Qué dibuja |
|---|---|
| Tabla | Las 5 primeras filas, con «N filas · M columnas». |
| Un valor | La primera celda de la primera fila, en grande. Para un COUNT(*) o cualquier agregado de una cifra. |
| Barras, Línea y Tarta | La primera columna como etiqueta y la primera columna numérica como medida, hasta 24 puntos. Las filas cuyo valor no es un número se dejan fuera. Una línea necesita al menos 2 puntos. |
Pestaña Servidor
La primera pestaña, Servidor, existe solo mientras el PostgreSQL local está en marcha. Lee el motor en directo; nada de ella se guarda.
Puedes
- Leer Sesiones, Commits, Rollbacks, Aciertos de caché, Tamaño de los datos, Versión, Interbloqueos y Puntos de control. Se actualizan cada 5 segundos mientras la pestaña está en pantalla.
No puedes, y por qué
- Ver esta pestaña en cualquier otro motor: sale del PostgreSQL embebido, que solo corre en móviles ARM de 64 bits.Dispositivo
- Editar o guardar esta pestaña: no contiene ninguna consulta.A propósito
Gráficas
Gráficas dibuja el último resultado de la consola SQL. Ejecuta primero una consulta: necesita un resultado correcto con al menos 2 columnas, o la app dice «Execute a query with at least 2 columns first» (en inglés en todos los idiomas).
Puedes
- Elegir Bar, Line, Pie, Scatter o Heatmap (los nombres de los tipos de gráfica son texto fijo en inglés).
- El eje X es la primera columna. El eje Y es la primera columna numérica que le sigue, y la tarta usa las mismas dos columnas con solo valores positivos. Scatter cruza las dos primeras columnas numéricas (con una sola no hay nada que dibujar). Las celdas que no son números se dibujan como 0.
- Activar o desactivar la leyenda y la cuadrícula con los dos iconos junto a la gráfica (Alternar Leyenda y Alternar Cuadrícula).
- El icono de actualizar de la cabecera vuelve a dibujar la gráfica con el último resultado de la consola.
- Tocar el icono de guardar (Exportar Gráfico) para escribir un PNG con fondo blanco con el selector de ficheros del sistema.
- Tocar el icono de gráfica (Añadir al panel) para guardar la consulta como widget.
- Sin ninguna columna numérica dice «Sin datos. Ejecuta una query con columnas numéricas primero.»
No puedes, y por qué
- Dibujar más de una medida a la vez: una columna numérica va en el eje, porque varias en un eje compartido no se leen (centenares junto a unidades).A propósito
Datos de prueba
Datos de prueba rellena la tabla que tienes abierta con filas inventadas. La pantalla se llama Generador de Datos. Funciona columna a columna: cada columna tiene su propio tipo de dato, deducido de su nombre, y puedes cambiarlo. Abre primero una tabla, o la app dice «Open a table first — the mock data goes into it.» (en inglés en todos los idiomas).
Puedes
- Elegir cuántas filas con los chips 10, 50, 100, 500 o 1000 (Número de Filas).
- Activar Respetar Constraints para reutilizar los valores que ya existen en las columnas de clave foránea («Utilizar valores FK existentes si están disponibles»; hasta 1.000 valores distintos por columna de clave foránea).
- En Configuración de Columnas, cambiar el tipo de cualquier columna. Los tipos vienen en grupos: Identidad, Seguridad, Números, Fechas, Texto, Web, Lugares, Negocio y Otros. El tipo inicial se adivina por el nombre de la columna en inglés, español y portugués, así que una columna llamada
nombreocidaderecibe un nombre o una ciudad. - Una clave primaria que la base de datos rellena sola (autoincremental o con valor por defecto) se deja fuera, para que el
INSERTno la nombre. - Tocar Generar N filas: ejecuta un
INSERTpor fila en la conexión abierta, una detrás de otra. Se detiene en el primer error con «Stopped after N rows: …», y las filas ya insertadas se quedan. - O usar Generación AI: escribe lo que quieres en Describe los datos (por ejemplo «pedidos realistas de e-commerce con productos») y toca Generar con AI. Tras aceptar el diálogo de consentimiento del proveedor, el modelo recibe el nombre de la tabla, sus columnas (nombre, tipo, clave primaria, no nulo), el nombre del motor y tu descripción, nunca tus filas. Debe responder un array JSON que cuadre exactamente con la tabla, y las filas se insertan una a una. Si ningún proveedor responde, la app ofrece Usar el propio.
No puedes, y por qué
- Insertar más de 100 filas en Gratis, o 50 con IA: elegir 500 o 1000 recorta el número en silencio, y el botón sigue diciendo «Generar 1000 filas».Pro
- Elegir más de 1000 filas: el chip más grande es 1000 y la IA se detiene en 200 en Pro. El código admite hasta 100.000 en Pro, pero la pantalla no lo ofrece.Aún no
- Generar filas en Redis, MongoDB o Firestore: la herramienta no se ofrece ahí porque no tienen tablas donde insertar.A propósito
Importar datos
Importar carga un fichero en una tabla de la conexión SQL abierta. Abre el selector de ficheros del sistema (cualquier tipo de fichero) y luego la Vista Previa de Importación. Se llega desde Importar en Herramientas, o desde ⋮ → Importar CSV en la lista de tablas (el menú dice CSV pero admite seis formatos).
| Formato | Cómo se lee |
|---|---|
| CSV y TSV | Texto delimitado. Los campos entrecomillados valen, incluso con una coma o un salto de línea dentro. La primera fila es la cabecera da nombre a las columnas; sin ella se llaman col_1, col_2… |
| JSON | Un array de objetos, o un objeto. Cada objeto es una fila y sus claves son las columnas. |
| NDJSON | Un objeto JSON por línea. |
| SQL | Solo las sentencias INSERT INTO de un volcado se leen como filas. Los nombres de columna salen de la sentencia (col_1… cuando no los tiene). |
| XLSX | La primera hoja de un fichero de Excel. |
La vista previa
Tras elegir el fichero, la Vista Previa de Importación muestra lo que se leyó. El formato se averigua primero por el contenido y después por el nombre del fichero. No se escribe nada hasta que tocas Importar.
Puedes
- Ver el formato detectado como insignia, el recuento (N filas · M columnas, solo cuando se contó el fichero entero) y las 50 primeras filas bajo Vista Previa.
- Editar Nombre de Tabla. Empieza siendo el nombre del fichero, limpiado (
clientes-2026.xlsxpasa aclientes_2026). - Marcar o desmarcar La primera fila es la cabecera (marcada por defecto; solo importa para CSV, TSV y XLSX), Crear tabla (marcada por defecto: ejecuta
CREATE TABLE IF NOT EXISTS) y Vaciar primero (desmarcada por defecto: ejecuta antesDELETE FROMde la tabla, y se pone en rojo al marcarla). - Leer los chips de Tipos Detectados. Salen de las 50 filas de la muestra («Los tipos se deducen de las filas de la muestra, no del fichero entero.»); Crear tabla vuelve a deducir los tipos con el fichero entero.
- Tocar Importar. Un mensaje te dice cuántas filas entraron en la tabla.
No puedes, y por qué
- Importar en una base de datos que ya tiene 4 tablas en el plan Gratis, ni siquiera en una tabla existente: el límite se comprueba antes de leer el fichero, y se abre la ventana Base de Datos Pro.Pro
- Importar
.xls,.odso cualquier formato fuera de los seis, o leer una hoja de un Excel que no sea la primera.A propósito - Importar en Redis, MongoDB o Firestore: no hablan SQL.A propósito
Transacciones y lotes
| Conexión | Cómo entran las filas |
|---|---|
| El PostgreSQL local | Una transacción. Si falla un lote, todo se deshace, incluida una tabla que creó la importación: «Importación deshecha tras N de M filas; no se guardó nada: …» |
| Cualquier otra conexión SQL | Cada lote es atómico por sí solo. Si uno falla, los anteriores se quedan: «Importadas N de M filas: …» La creación de la tabla y Vaciar primero se ejecutan como sentencias separadas antes de los lotes, así que tampoco se deshacen. |
| Cualquiera de ellas | Las filas entran en sentencias INSERT … VALUES de hasta 200 filas (o 60.000 caracteres). |
Importar desde el Portapapeles
Solo en el motor local, ⋮ → Importar desde Portapapeles (en la lista de tablas) ejecuta el texto que copiaste como un volcado SQL.
Puedes
- Copia un volcado, abre el menú y toca Importar desde Portapapeles. El texto se parte en cada
;y las sentencias se ejecutan una a una, sin transacción. Si alguna falla, ves cuántas fallaron y los tres primeros mensajes distintos. - La importación se anota en el Registro de auditoría como
IMPORT.
No puedes, y por qué
- Conservar un punto y coma dentro de una cadena o del cuerpo de una función: el volcado se parte en cada
;, así que esas sentencias se rompen.A propósito - Importar un volcado que crea tablas en el plan Gratis cuando la base ya tiene 4: antes se abre la ventana Base de Datos Pro.Pro
Historial y consultas guardadas
Dos herramientas, las dos sobre el SQL que ejecutaste desde la consola.
Historial de consultas
Historial de Consultas lista lo que ejecutaste, lo más reciente primero. Es una sola lista para todas las conexiones, guardada en el dispositivo, de hasta 500 entradas.
Puedes
- Leer cada entrada: el SQL (3 líneas), el número de filas o un icono de error, la duración, el nombre de la conexión · la fecha y el error.
- Tocar una entrada para cargar su SQL en la consola.
- Tocar Limpiar Todo para vaciar la lista. No pregunta antes.
- Las consultas con parámetros se guardan como plantilla. Las credenciales derivadas de Turso y Upstash se tachan del texto antes de guardarlo.
No puedes, y por qué
- Ver el resultado de una consulta: solo se guardan el SQL y sus cifras, diga lo que diga la descripción de una línea de la herramienta («Todo lo que has ejecutado, con su resultado»).A propósito
- Buscar, filtrar o borrar una sola entrada: solo existe Limpiar Todo.Aún no
Consultas guardadas
Consultas Guardadas lista las consultas que guardaste desde la consola (⋮ → Guardar Consulta), ordenadas por último uso.
Puedes
- Tocar una consulta para cargarla en la consola. El icono de papelera (Eliminar) la quita sin pedir confirmación.
- Guardar consultas en carpetas: Nueva carpeta (Nombre de la carpeta), los chips Todas, Sin carpeta y uno por carpeta, y Mover a una carpeta en una consulta (aparece cuando ya tienes alguna carpeta). Borrar carpeta quita solo la carpeta: «Borrar la carpeta no borra las consultas: salen de ella.»
- En un proyecto de Supabase, una sección Desde Supabase lista los snippets de tu panel de Supabase, de solo lectura, con Abrir en la consola y Guardar una copia.
No puedes, y por qué
- Guardar una 6.ª consulta en Gratis: el límite es de 5 consultas guardadas (Guardar una copia también cuenta).Pro
- Editar aquí un snippet de Supabase: son de solo lectura. Ábrelo en la consola o guarda una copia.A propósito
Seguridad
Seguridad tiene cinco pestañas: Enmascarado, Roles, Políticas, Permisos y Biométrica. Abrirla desde Herramientas empieza siempre en Enmascarado.
Enmascarado
«El enmascarado solo cambia lo que ves en esta aplicación. Los datos de la base no se tocan.» Las reglas se guardan en el dispositivo.
Puedes
- Tocar Agregar Regla, escribir un Patrón de columna y elegir un Tipo de máscara. Activar o desactivar cada regla, o borrarla.
- El patrón es un trozo de texto que debe aparecer en el nombre de la columna, sin distinguir mayúsculas:
mailenmascaraemailymail_backup. No es una expresión regular, así queemail|passwordbuscaría exactamente ese texto. Gana la primera regla activa que coincide. - Una columna enmascarada muestra el valor enmascarado en el visor de datos. Para ver el valor real, abre la hoja Columnas y usa Ver en claro (Ver en claro (huella) cuando el bloqueo biométrico está activado). Dura hasta que sales de la tabla.
No puedes, y por qué
- Enmascarar la consola SQL, las exportaciones, las copias o lo que lee el chat de IA: el enmascarado solo se aplica a la rejilla del visor de datos.A propósito
- Usar una expresión regular en el patrón.A propósito
| Tipo de máscara | Qué ves |
|---|---|
| Full Mask | ******** |
| Partial Email | La primera letra, *** y el dominio: j***@example.com. Un valor con menos de 2 caracteres antes de la @, o sin @, muestra ********. |
| Partial Phone | Los 3 primeros caracteres, -***-** y los 2 últimos: 555-***-**67. Un valor de 4 caracteres o menos muestra ****. |
| First/Last Chars | El primer y el último carácter con *** en medio: J***n. Un valor de 2 caracteres o menos muestra **. |
| SHA-256 Hash | Los primeros 16 caracteres hexadecimales del hash SHA-256 del valor, seguidos de .... |
| REDACTED | [REDACTED] |
Roles
Roles lee los roles o usuarios reales de la conexión.
Puedes
- PostgreSQL (el motor local, Neon, Supabase o un servidor): cada rol de
pg_roles, sin lospg_*del sistema, con sus privilegios y las tablas del esquemapublica las que llegan. - MySQL, MariaDB y PlanetScale: las cuentas, de
mysql.usero, cuando no se puede leer (PlanetScale la oculta), de los privilegios de tabla, con sus tablas. - MongoDB Atlas: los usuarios de base de datos del proyecto, de solo lectura, cuando hay un clúster seleccionado.
- Cualquier otro motor dice «Este motor no tiene usuarios ni roles.»
No puedes, y por qué
- Crear, editar o borrar roles desde aquí: la pestaña solo lee.A propósito
- Ver la contraseña de un usuario de Atlas: Atlas no la expone.Terceros
Políticas (row level security)
Políticas muestra Row Level Security para cualquier conexión PostgreSQL (Supabase, Neon, un Postgres directo, el motor local), leída de pg_policies.
Puedes
- Ver cada tabla marcada como RLS activo o Desprotegida y, de cada política, su nombre, comando, roles,
USINGyWITH CHECK. - Una tabla con RLS apagado dice «Row Level Security está apagado: cualquiera con esta conexión puede leer todas las filas.» Con RLS activo y sin políticas dice que solo los roles que se saltan RLS (el dueño de la tabla,
service_role) pueden leerla o escribirla. - Tocar Copiar SQL para copiar un
ALTER TABLE … ENABLE ROW LEVEL SECURITYo unCREATE POLICY …que ejecutas tú. - También llegas aquí con Abrir en Policies desde Salud del esquema de Supabase, o con una acción Abrir en Database del Backend Manager.
No puedes, y por qué
- Ejecutar nada desde esta pestaña: «Nada de aquí se ejecuta: Copy SQL solo copia.»A propósito
- Ver políticas en MySQL, SQLite o los motores NoSQL: Row Level Security solo existe en PostgreSQL.Terceros
Permisos
Permisos ejecuta sentencias GRANT y REVOKE reales en la conexión abierta.
Puedes
- Tocar Otorgar (Otorgar Permiso), escribir el Rol, elegir la Tabla y marcar los privilegios en Seleccionar privilegios: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX o ALL PRIVILEGES. Ejecuta
GRANT … ON … TO …. - El icono Revocar de una entrada de esa lista ejecuta
REVOKEde los privilegios que tiene la entrada. Los nombres de rol y de tabla deben ser identificadores sencillos (letras, dígitos y guiones bajos, sin empezar por un dígito).
No puedes, y por qué
- Ver o revocar los permisos que ya existen: la lista solo muestra lo que otorgaste en esta sesión, así que Revocar solo llega a esos. Usa Roles para ver los reales.Aún no
Bloqueo biométrico
El interruptor Bloqueo Biométrico («Requerir autenticación biométrica para datos sensibles») se guarda en el dispositivo.
Puedes
- Con él activado, al abrir el módulo aparece Base de datos bloqueada («Autentícate para abrir tus bases de datos») y se pide tu huella o tu cara, o el PIN, patrón o contraseña del dispositivo.
- Con él activado, Ver en claro (huella) vuelve a pedirla antes de revelar un valor enmascarado.
- Con el bloqueo apagado, la lista dice Libre en cada línea y la nota «Con el bloqueo apagado, ninguna de estas pregunta nada.»
No puedes, y por qué
- Contar con el bloqueo para confirmar el borrado de una tabla, revelar una contraseña guardada o abrir una conexión PRODUCTION: la pantalla las muestra como Pregunta, pero la app todavía no pregunta.Aún no
| Línea de Dónde se aplica | Qué hace la app |
|---|---|
| Borrar, vaciar o eliminar una tabla | Marcada como Pregunta. La app no pide tu huella aquí. |
| Ver en claro un valor enmascarado | Pregunta, mediante Ver en claro (huella). |
| Revelar una contraseña guardada | Marcada como Pregunta. La app no pide tu huella aquí. |
| Abrir una conexión PRODUCTION | Marcada como Pregunta. La app no pide tu huella aquí. |
Registro de auditoría
Registro de Auditoría guarda en el dispositivo una lista de lo que ejecutó el módulo: hasta 1.000 entradas, y nada sale del teléfono.
Puedes
- Leer cada entrada: la operación (
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,VACUUMuOTHER, tomada de la primera palabra de la sentencia, y coloreada para errores, operaciones destructivas y de escritura), la fecha (dd/MM HH:mm:ss), el SQL (3 líneas), una insignia de tabla, el número de filas cuando es mayor que 0, la duración cuando es mayor que 0, y el error. - Qué se registra: cada sentencia ejecutada desde la consola SQL, un volcado SQL importado desde el portapapeles (como
IMPORT) y las tablas creadas con el formulario Tabla nueva (comoCREATE). - Tocar el icono de repetir (Volver a ejecutar) para devolver a la consola el SQL de la entrada. No lo ejecuta.
- Tocar el icono de barrido (Limpiar Todo) para vaciar el registro. No pregunta antes.
- La insignia de tabla es la tabla que estaba abierta cuando se ejecutó la sentencia, no una sacada del SQL.
- Una entrada guarda el SQL tal como se ejecutó, con los valores de los parámetros
:nombreya sustituidos. El historial de consultas guarda la plantilla.
No puedes, y por qué
- Ver en qué conexión se ejecutó cada entrada: se guarda, pero la pantalla no lo muestra.Aún no
- Buscar, filtrar o exportar el registro.Aún no
- Auditar acciones de Redis, MongoDB o Firestore: no pasan por el ejecutor de la consola, así que no dejan entrada.A propósito
Compartir
Compartir (la cabecera dice Compartir) saca de la app una conexión, una consulta o la configuración del módulo. No es colaboración: nadie más obtiene acceso, y no hay sincronización en la nube.
Puedes
- En Compartir rápido, Compartir Conexión copia la conexión abierta como JSON (
name,type,host,port,database,user, nunca la contraseña) y Compartir Query copia la consulta actual de la consola. Con la consola vacía lo dice. - En Configuración (N conexiones · M queries guardadas), Guardar en… escribe
pocketcode-db-<fecha>.jsoncon el selector de ficheros con todas las conexiones de la lista (una contraseña guardada pasa a***), tus consultas guardadas (nombre y SQL) y la preferencia del Modo seguro. Copiar pone el mismo JSON en el portapapeles. - Abrir… lee uno de esos ficheros y añade las conexiones que trae y tú no tienes. Los duplicados (mismo tipo y
host:puerto/base) se omiten y las contraseñas***quedan vacías, así que las escribes al conectar. Informa «Config imported: N connection(s)» (en inglés en todos los idiomas). - Pegar (junto a Copiar) importa el JSON que haya en el portapapeles, igual que Abrir…: las mismas reglas para duplicados y contraseñas
***, y el mismo informe. Sin texto en el portapapeles dice «El portapapeles no tiene texto que importar.».
No puedes, y por qué
- Importar más conexiones de las que permite el plan con Abrir… o Pegar: en Free la cuenta incluye las conexiones que guardaste y las añadidas antes en esta sesión, así que con una en total el resto se omite y se abre la ventana Base de Datos Pro.Pro
- Recuperar consultas guardadas con Abrir… o Pegar: solo importan las conexiones, y las consultas del fichero se ignoran.Aún no
- Conservar las conexiones que añaden Abrir… o Pegar cuando el módulo se recarga: se guardan solo en memoria, como una sesión.Aún no
- Llevar la configuración a otro dispositivo por el portapapeles: la propia pantalla dice que el portapapeles sirve para pegar en una conversación y que el fichero sirve para llevarla.A propósito
Proyectos en la nube
Abrir una conexión de cuenta en la nube (Neon, Supabase, PlanetScale, MongoDB Atlas, Turso, Cloudflare D1 o Upstash) muestra los proyectos de la cuenta en Proyectos.
La lista
Proyectos lista lo que contiene la cuenta del proveedor.
Puedes
- Buscar con Buscar proyectos… (solo aparece cuando hay más de un proyecto).
- Leer cada proyecto: su nombre, su estado · región, su id en monoespaciado y un punto verde cuando está activo.
- Tocar uno. Neon, PlanetScale, Turso y Supabase abren la ficha del proyecto; D1 va directa a sus tablas; Atlas abre el formulario de conexión (ver MongoDB); Upstash se abre como base Redis cuando devuelve contraseña, y si no por REST como una tabla de solo lectura.
No puedes, y por qué
- Crear o borrar proyectos: la lista solo los muestra. Sin ninguno dice «Crea uno desde el dashboard del proveedor».A propósito
La ficha del proyecto
Cada proveedor rellena las secciones que tiene. El botón principal es Ver tablas.
| Proveedor | Qué muestra la ficha |
|---|---|
| Neon | Cadena de conexión, enmascarada. El icono Mostrar u ocultar la revela y muestra Copiar (la copia se marca como sensible en Android 13 y posteriores), con el aviso «Contiene la contraseña de la base de datos en claro.» Revelarla no pide tu huella. También Ramas. |
| PlanetScale (MySQL) | Ramas, Solicitudes de despliegue, Esquema (el SQL de la rama activa, hasta 14 líneas, con botón de copiar) y Revisión del esquema (los avisos de schema-lint con su gravedad). |
| Turso | Regiones disponibles, el catálogo de la cuenta. |
| Supabase | Proyecto (región, versión de Postgres, estado), Pooler de conexión (siempre enmascarado; copiar copia lo que ves) y Conexión directa con Usar una conexión directa. Eso abre el formulario de conexión con el pooler rellenado como una conexión PostgreSQL con TLS; escribe una vez la contraseña de la base y se guarda como una conexión propia, llamada «(directa)», con EXPLAIN real y el diseñador de esquema. |
No puedes, y por qué
- Ver la contraseña de la base de datos de Supabase o Atlas: sus APIs no la dan.Terceros
- Editar ramas o deploy requests desde la ficha: solo lee.A propósito
Diff del deploy request de PlanetScale
En un proyecto de PlanetScale (MySQL), Comparar esquemas no abre el diff de instantáneas: muestra lo que PlanetScale ejecutará cuando se despliegue el primer deploy request de la lista del proyecto. La pantalla es Diff de Esquema, con la sección Diff del deploy request. Es gratis.
Puedes
- Leerlo sentencia a sentencia: la tabla, la operación (una insignia) y el DDL. Un Borra datos — irreversible en rojo marca una sentencia destructiva. Si no cambia nada dice «Este deploy request no cambia nada.»
- Llegar con Comparar esquemas mientras el proyecto está abierto, o con una acción Abrir en Database del Backend Manager que apunte al diff de esquema.
No puedes, y por qué
- Elegir otro deploy request: es siempre el primero de la lista Solicitudes de despliegue de la ficha del proyecto.A propósito
- Aprobar, fusionar o desplegar desde aquí: la pantalla solo lee.A propósito
Gratis y Pro
Casi todo lo de esta página es gratis. Estos son los límites que el plan le pone, sacados de la definición del plan, y las dos funciones Pro que tocan estas herramientas.
| Límite o función | Gratis | Pro |
|---|---|---|
| Tablas por base de datos (también frena Importar y un volcado SQL que crea tablas) | 4 | Sin límite |
| Consultas guardadas | 5 | Sin límite |
| Conexiones guardadas propias (el motor local y las cuentas en la nube no cuentan; sí cuentan las que añaden Abrir… o Pegar en Compartir y las ramas de PlanetScale abiertas) | 1 | Sin límite |
| Pestañas de consola | 2 | Sin límite |
| Bases de datos en el motor local (Base de datos nueva) | 1 | Sin límite |
| Datos de prueba por ejecución | 100 filas (50 con IA) | Hasta 100.000 filas, pero el chip más grande de la pantalla es 1000 (200 con IA) |
| Comparar esquemas (el diff de instantáneas) | No disponible. El diff del deploy request de PlanetScale es gratis. | Sí |
| Copias de seguridad programadas | No disponible. Crear, exportar, importar, restaurar y borrar copias es gratis. | Sí |
Sin límite de plan
- Las pantallas de Redis, Firestore y MongoDB.
- Monitor y sus alertas, Paneles y Gráficas.
- Datos de prueba e Importar, salvo los límites de la tabla.
- Historial de consultas, Seguridad, Registro de auditoría, Compartir, la ficha del proyecto y el diff del deploy request de PlanetScale.
Privacidad y seguridad
Qué se guarda, dónde, y qué sale del dispositivo:
- Sin servidor de PocketCode: las herramientas hablan con tu host, con la API del proveedor o con el motor local. Redis y MongoDB usan clientes propios de PocketCode directos a tu servidor. Las direcciones
mongodb+srv://se resuelven con DNS sobre HTTPS, y esa consulta va a Google o a Cloudflare. - Firestore se lee con tu sesión de Google (la ruta de solo lectura) o con el SDK de cliente de Firebase y las claves de tu propio proyecto. El SDK corre como una app de Firebase aparte, nunca dentro del proyecto de PocketCode.
- En el dispositivo: el historial de consultas (hasta 500 entradas), el registro de auditoría (hasta 1.000), las consultas guardadas, las reglas de enmascarado, las reglas de alerta, los paneles y las instantáneas de esquema son ficheros del módulo en el almacenamiento privado de la app, por cuenta (
history.json,audit.json,saved_queries.json,masking_rules.json,alert_rules.json,dashboards.json,schema_snapshots.json). Contienen el SQL que ejecutaste, que puede llevar valores literales. Las credenciales derivadas de Turso y Upstash se tachan de ese texto antes de guardarlo. - Los paneles guardan consultas, nunca resultados: los números se vuelven a leer cada vez y solo se conservan en memoria.
- Las contraseñas no están en esos ficheros: viven en el almacenamiento cifrado de Android. Compartir Conexión deja fuera la contraseña, y Guardar en… y Copiar la sustituyen por
***. La cadena de conexión de Neon de la ficha del proyecto sí contiene la contraseña en claro, y revelarla no pide tu huella. - IA: no se envía nada antes de aceptar el diálogo de consentimiento del proveedor. Generar con AI envía el nombre de la tabla, sus columnas (nombre, tipo, clave primaria, no nulo), el nombre del motor y tu descripción, nunca tus filas.
- El enmascarado cambia solo lo que muestra el visor de datos. La consola SQL, las exportaciones y las herramientas del chat de IA no se enmascaran.
- El bloqueo biométrico cubre entrar al módulo y revelar un valor enmascarado, y nada más por ahora.
- La analítica está apagada hasta que activas Permitir analíticas en Ajustes. Con ella activada, una consulta registra el tipo de motor, su duración y el número de filas. Una consulta fallida registra solo la categoría del error, nunca su texto.
Limitaciones
Lo que todavía no funciona o funciona distinto de lo que esperarías, para que no te pille por sorpresa:
- MongoDB muestra colecciones y recuentos, no los documentos de dentro. No hay shell ni constructor de agregaciones.Aún no
- Redis: los valores no se pueden editar desde el explorador de claves, solo con la CLI. El explorador cambia un TTL y borra claves.Aún no
- Firestore no puede listar colecciones por la ruta del SDK, porque el SDK de cliente no tiene una llamada para ello.Terceros
- Firestore es de solo lectura con la conexión de Google del Backend Manager.A propósito
- Firestore: las ediciones escriben como texto cada valor que no vuelvas a escribir como JSON, y reemplazan el documento entero.Aún no
- Las sesiones con cancelar y terminar existen solo para el PostgreSQL local.A propósito
- El uso de los índices es una estimación sacada de tu registro de auditoría, y la pestaña Índices solo funciona en conexiones con dialecto PostgreSQL.Aún no
- Las alertas se comprueban solo al abrir o actualizar el monitor. Nada corre en segundo plano.Aún no
- Los paneles ejecutan solo sentencias de lectura, y nunca más rápido que cada 5 segundos.A propósito
- Datos de prueba tiene un tope de 100 filas (50 con IA) en Gratis, recortado sin avisar.Pro
- Importar se detiene en 4 tablas en Gratis, incluso hacia una tabla existente, y admite seis formatos.Pro
- Permisos lista solo lo que otorgaste en esta sesión. Roles muestra los reales.Aún no
- El bloqueo biométrico no pregunta antes de borrar una tabla, revelar una contraseña guardada o abrir una conexión PRODUCTION, aunque la pantalla diga que sí.Aún no
- Compartir: Abrir… y Pegar importan solo conexiones, en memoria.Aún no
- El historial de consultas y el registro de auditoría no se pueden buscar, filtrar ni recortar entrada a entrada, y el registro de auditoría no muestra la conexión.Aún no
- Las conexiones Redis, Firestore y MongoDB listan nueve herramientas orientadas a SQL; Copias de seguridad y Exportar no funcionan para ellas y no hay exportación de colecciones ni de claves.A propósito
- Algunos mensajes de las pantallas de Redis, Firestore y MongoDB y unos pocos avisos están escritos en español o en inglés sea cual sea el idioma de la app.Aún no
Resolución de problemas
Los mensajes de estas herramientas como los escribe la app (los corchetes angulares marcan un valor que rellena la app), y qué hacer con cada uno. Un par de entradas describen una situación en vez de un mensaje.
Firestore no permite listar colecciones desde una app cliente. Escribe una ruta de colección para explorarla.
Estás en la ruta del SDK, donde Firestore no puede listar colecciones. Escribe la ruta (por ejemplo users) en Ruta de colección y toca la flecha. Para obtener la lista de colecciones y subcolecciones, conecta Firebase en el Backend Manager: esa ruta es de solo lectura, pero las lista.
Solo lectura: <proyecto> está abierto con tu conexión de Google del Backend Manager. Para editar documentos, configura este proyecto en Ajustes → Integraciones → Firebase.
Los botones de editar y borrar se ocultan en la ruta de Google. Añade el Project ID, el App ID y la API key del proyecto en Firebase, dentro de Integraciones: entonces ese proyecto se abre por el SDK y se puede editar.
Google no dejó leer Firestore en <proyecto> (403). Puede que la sesión no tenga acceso a Firestore o que la API de Firestore esté desactivada en este proyecto.
Activa la API de Cloud Firestore del proyecto en Google Cloud, o vuelve a conectar Firebase en el Backend Manager. Si el proyecto es además el que configuraste para el SDK, el explorador ya recurre al SDK tras un rechazo.
Tu sesión de Google para Firebase caducó o se revocó. Vuelve a conectar Firebase en el Backend Manager.
Vuelve a conectar Firebase allí y abre de nuevo la conexión Cloud Firestore.
No hay con qué leer <proyecto>: conecta Firebase en el Backend Manager o configura este proyecto en Ajustes → Integraciones → Firebase.
El proyecto que elegiste no tiene ninguna de las dos rutas. Elige otro proyecto, o añade una de las dos.
<proyecto> no tiene una base de Firestore llamada (default).
Solo se lee la base (default). Créala en la consola de Firebase o elige otro proyecto.
Un error que empieza por FAILED_PRECONDITION y trae un enlace
Firestore necesita un índice compuesto para esa consulta (desigualdades sobre varios campos, u ordenar por otro campo). Abre el enlace del error para crear el índice, espera a que se construya y ejecuta la consulta de nuevo.
PERMISSION_DENIED — Your Firestore security rules rejected this operation.
Tus propias reglas de seguridad rechazan la lectura, la edición o el borrado (el mensaje sale en inglés en todos los idiomas). Cambia las reglas en la consola de Firebase, o lee el proyecto por la ruta de Google, que no depende de ellas.
<motor> no informa de las sesiones abiertas — solo lo hace el motor embebido.
Las sesiones salen de pg_stat_activity del PostgreSQL local. Neon, Supabase, MySQL y los motores NoSQL no las informan aquí.
No se ejecuta: <VERBO> escribe, y un panel solo ejecuta consultas de lectura.
Un widget se ejecuta solo y por intervalo. Edita el widget y cambia su SQL por un SELECT; ejecuta las sentencias que escriben desde la consola.
La conexión con la que se creó este widget ya no está disponible.
Un widget conserva la conexión en la que se creó. Borra el widget y vuelve a añadirlo desde la consola con la conexión correcta abierta.
Execute a query with at least 2 columns first
Gráficas dibuja el último resultado de la consola. Ejecuta una consulta que devuelva una columna de etiquetas y al menos otra más, y luego abre Gráficas. El mensaje sale en inglés en todos los idiomas.
Open a table first — the mock data goes into it.
Datos de prueba inserta en la tabla que tienes abierta. Abre una desde Tablas y vuelve a usar la herramienta. El mensaje sale en inglés en todos los idiomas.
Stopped after N rows: …
El generador inserta una fila cada vez y se detiene en el primer error, por ejemplo una restricción de unicidad o de clave foránea. Las filas ya insertadas se quedan. Con la IA el mensaje es «Parado tras N filas: …». Revisa los tipos de columna, activa Respetar Constraints o genera menos filas.
Ningún proveedor de IA ha contestado. El generador propio puede rellenar la tabla.
Ningún modelo contestó. Revisa tu proveedor de IA en los ajustes de IA, o toca Usar el propio para rellenar la tabla con el generador que no necesita IA.
Importación deshecha tras N de M filas; no se guardó nada: …
En el PostgreSQL local toda la importación es una transacción, así que una fila mala lo deshace todo, incluida una tabla que creó la importación. Corrige la fila que nombra el mensaje e importa de nuevo.
Base de Datos Pro se abre al elegir Importar
Gratis permite 4 tablas por base de datos y comprueba el límite antes de leer el fichero, incluso cuando importas en una tabla existente. Pro quita el límite.
TTL de 0 segundos borraría la clave al instante. Usa DEL si eso es lo que quieres.
Redis borra una clave cuyo TTL es 0, así que la app lo rechaza. Usa un número negativo para quitar la caducidad, uno positivo para fijarla, o borra la clave.
<host>:<puerto> cerró la conexión. Si el servidor exige TLS, activa SSL en la conexión (y al revés).
Un desajuste de TLS: el servidor quiere TLS y la conexión lo tiene desactivado, o al revés. Edita la conexión y cambia SSL.
Contraseña rechazada por Redis. Revisa la contraseña de la conexión.
La contraseña o el usuario son incorrectos. Si el servidor pide contraseña y la conexión no tiene ninguna, el mensaje es «Este Redis exige contraseña y la conexión no tiene ninguna.»
Upstash no devolvió ni contraseña ni token REST para esta base.
El token de la cuenta no puede leer las credenciales de esta base. Abrirla recurre a una tabla REST de solo lectura, o falla.
Este motor no tiene usuarios ni roles.
Roles lee solo PostgreSQL, MySQL, MariaDB, PlanetScale y Atlas. Si ves «No se han podido leer los roles de esta conexión.», el usuario de la conexión no puede leerlos.
Escribe el usuario y la contraseña de la base —Atlas no los da por API— y guarda.
Atlas nunca devuelve una contraseña de base de datos. Rellena el usuario y la contraseña en el formulario de conexión, Probar conexión y guarda.
Config imported: N connection(s)
Abrir… o Pegar añade esas conexiones solo a la sesión (el mensaje sale en inglés en todos los idiomas). Cuando el módulo se recarga desaparecen, así que vuelve a guardarlas con el formulario de conexión. Si además se abre la ventana Base de Datos Pro, Free guarda una sola conexión propia y el resto del fichero se omitió.
El portapapeles no tiene texto que importar.
Pegar no encontró texto en el portapapeles. Copia primero una configuración (Copiar en la misma pantalla, o desde otro aparato) y vuelve a pulsar Pegar. Para traer un fichero, usa Abrir….
Base de datos bloqueada
El bloqueo biométrico está activado. Toca Desbloquear y autentícate con tu huella, tu cara o el PIN del dispositivo. Si ves «El bloqueo de pantalla no está disponible en esta ventana.», el aviso del sistema no se puede mostrar ahí y el módulo se abre sin el bloqueo: usa el módulo desde la ventana normal de la app si quieres el bloqueo.
Siguientes pasos