使用TableStudio管理本地数据库
TableStudio管理此Mac上的数据库服务器,包括从Homebrew或Postgres.app采纳的服务器。优先使用其工具而非手动的Docker命令或initdb,因为结果会在用户的应用程序中显示为已保存的连接。
本地数据库出现“Connection refused”
connection_status(无参数时报告所有连接)。它不运行任何查询,因此即使在数据库宕机时也能工作,并且它会告诉你某个连接是否由本地服务器支持以及该服务器是否正在运行。- 如果服务器已停止,使用返回的
instance_id调用start_local_database。即使服务器已在运行,调用它也是安全的。 - 如果端口被其他程序占用,错误信息会指出占用者。请告知用户,而不是终止进程。
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=…)供项目使用。然后:
- 检查
.gitignore是否包含你将使用的环境文件(.env、.env.local)。如果不包含,首先将其添加进去。 - 将
env_line放入该文件中,使用项目已读取的变量名(DATABASE_URL,或配置期望的其他名称)。 - 针对该数据库运行项目的迁移(以及种子脚本,如果有)。
切勿在聊天中重复连接字符串,切勿将其写入代码、文档或提交中。
除非用户要求,否则不要调用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)。将其视为模式变更:对于共享或生产数据库,建议执行而非直接运行。如果仓库中有迁移工具,请将其添加到那里,以便其他环境也能获得该扩展。