Files
lab/go/projects/lyra/docs/plans/2026-10-17-postgres-connection-check.md
labmem 8c0c9978e5 feat(lyra): 接入 PostgreSQL 与 Goose 迁移
- 使用 pgx/sqlx 建立连接,从环境变量读取数据库密码
- 添加本地 PostgreSQL Compose 配置与初始迁移
- 补充 Goose 操作手册和连接串排错说明
2026-10-17 15:09:46 +08:00

1.7 KiB

PostgreSQL 启动连接检查

日期:2026-10-17

已批准目标

用户要求在 main.go 中通过 sqlx 查询数据库信息,检查尚无业务表的数据库连接。 查询只读取 current_database()、current_user、version(),不依赖业务表,不执行 DDL。

实施范围

  1. 保留当前工作区所有用户改动,仅在 cmd/lyra/main.go 中注册项目已选定的 pgx stdlib 驱动,使用带超时的连接及 GetContext 查询,输出数据库信息。
  2. 通过 go.mod/go.sum 加入 pgx/v5/stdlib 所需依赖;etc/lyra.toml 仅将 driver 的 postgres 改为 pgx,与驱动注册名保持一致,不读出或改动敏感配置。
  3. 补充数据库连接关闭;不重构配置加载、不实现 dotenv、不涉及 Goose 或业务表。

分工与证据路径

  • fixer:写入范围限定 main.go、go.mod、go.sum、TOML 的 driver 一行; 首次修改检查缩进和换行,保留已有修改。负责 gofmt、go test ./... 与构建验证。
  • 父会话:检查新增查询、超时、驱动名与范围,检查无明文凭据及意外文件改动。
  • 不打印配置文件完整内容或完整 DSN;不读取 .env.local 或 compose 中的敏感值。
  • 不运行服务、不连接真实数据库;编译/测试只证明查询代码可编译和现有测试通过, 实际连接是否成功由用户本地启动后观察查询输出确认。

验收

  • 已加入 pgx/v5 v5.11.0 驱动、五秒超时连接与系统信息查询,保留 HTTP 通路。
  • fixer 执行 go build ./...、go test ./... 均通过,未连接真实数据库。
  • 最终安全校正:连接与查询失败时只记录固定的阶段提示,不直接输出驱动原始 错误,避免连接串解析错误意外携带敏感配置。