Community写作与编辑github.com

tablestudioapp/plugins

在用户的Mac上通过TableStudio设置和管理本地开发数据库。适用于项目需要本地Postgres、MySQL、ClickHouse或SQLite数据库,或需要一个DATABASE_URL;当本地数据库拒绝连接或被停止(ECONNREFUSED、“connection refused”、“could not connect to server”、“Can't connect to MySQL server”)时;当用户想要一个临时或测试数据库,或一个安全的副本进行实验时;或者需要安装PostgreSQL扩展(pgvector、PostGIS、pg_trgm)时。

plugins 是什么?

TableStudio的本地数据库管理技能,专为AI代理(如Claude Code、Cursor、Codex)设计,用于在macOS上自动化管理本地开发数据库。它提供了一系列工具函数,包括检查连接状态、启动/停止数据库服务器、创建新数据库、获取连接字符串、创建安全沙箱副本以及管理PostgreSQL扩展。该技能支持Postgres、MySQL、ClickHouse和SQLite引擎,能够处理常见的连接错误(如“Connection refused”),并将新创建的数据库连接字符串安全地写入项目环境文件(如.env),同时确保不将密码或连接信息泄露到聊天或代码中。它能够复用TableStudio已有的数据库实例,并区分托管服务器、Homebrew或Postgres.app采纳的服务器以及SQLite文件。沙箱功能可以快速创建只读源的临时副本(仅结构、示例数据或生成数据),用于安全实验。扩展管理功能可以列出和安装PostgreSQL扩展,并建议通过迁移工具将其传播到其他环境。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tablestudioapp/plugins/tree/HEAD/tablestudio/skills/local-databases

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

使用TableStudio管理本地数据库

TableStudio管理此Mac上的数据库服务器,包括从Homebrew或Postgres.app采纳的服务器。优先使用其工具而非手动的Docker命令或initdb,因为结果会在用户的应用程序中显示为已保存的连接。

本地数据库出现“Connection refused”

  1. connection_status(无参数时报告所有连接)。它不运行任何查询,因此即使在数据库宕机时也能工作,并且它会告诉你某个连接是否由本地服务器支持以及该服务器是否正在运行。
  2. 如果服务器已停止,使用返回的instance_id调用start_local_database。即使服务器已在运行,调用它也是安全的。
  3. 如果端口被其他程序占用,错误信息会指出占用者。请告知用户,而不是终止进程。

list_local_databases显示所有本地内容:托管服务器、采纳的服务器、SQLite文件以及TableStudio不管理但占用端口的服务器。注意两个ID:instance_id是服务器(启动和停止使用它),而connection_id是你查询的数据库。它们不可互换。

创建新数据库

create_local_database需要name和engine参数:

  • sqlite无需安装任何东西且即时可用。当用户只想找个地方存放数据时,优先选择它。
  • postgres、mysql和clickhouse需要该引擎的服务器二进制文件已在Mac上。TableStudio不捆绑任何二进制文件,当缺失时会提示。请传递安装提示,而不是未经请求地安装软件。

它返回一个connection_id,可直接通过TableStudio的工具进行查询,以及env_line(DATABASE_URL=…)供项目使用。然后:

  1. 检查.gitignore是否包含你将使用的环境文件(.env、.env.local)。如果不包含,首先将其添加进去。
  2. 将env_line放入该文件中,使用项目已读取的变量名(DATABASE_URL,或配置期望的其他名称)。
  3. 针对该数据库运行项目的迁移(以及种子脚本,如果有)。

切勿在聊天中重复连接字符串,切勿将其写入代码、文档或提交中。

除非用户要求,否则不要调用stop_local_database作为清理或释放端口的方式。它会断开所有使用该服务器的连接,包括用户自己的窗口。

获取现有本地数据库的连接字符串

当项目需要访问TableStudio已知的本地数据库(例如填补缺失的.env,或将测试指向沙箱)时,使用其connection_id调用get_connection_url,并按照上述方式使用env_line。

  • TableStudio创建的数据库、沙箱以及没有密码的本地数据库始终可用。
  • 用户保存的带有自己密码的本地连接仅在他们允许的情况下共享。否则,拒绝信息会指出该设置:将此信息传递给用户,或让用户自行将值粘贴到环境文件中。切勿在聊天中询问密码。
  • 远程数据库、SSH隧道以及任何标记为生产的连接永远不会共享。请使用TableStudio的工具处理这些情况。

创建用于实验的安全副本

create_sandbox创建一个任意连接的临时本地副本(源仅被读取):

  • data: "none" 仅复制模式。最适合尝试DDL。
  • data: "sample" 复制每个表最多rows行数据。最适合针对真实行检查数据修复。
  • data: "fake" 生成行数据。

你可以对沙箱的connection_id执行任何操作。用户可以一键丢弃沙箱;你无法删除它。使用list_sandboxes来重用先前创建的沙箱。

PostgreSQL扩展

list_extensions显示服务器可以安装的内容以及已安装的内容。add_extension安装一个扩展(CREATE EXTENSION IF NOT EXISTS)。将其视为模式变更:对于共享或生产数据库,建议执行而非直接运行。如果仓库中有迁移工具,请将其添加到那里,以便其他环境也能获得该扩展。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能