# dbgo **Repository Path**: cng1985/dbgo ## Basic Information - **Project Name**: dbgo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-10 - **Last Updated**: 2026-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DBGo 网页版数据库工作台。用来保存连接、设计表和例程、执行 SQL、查看性能、用兼容 OpenAI 协议的模型优化语句,以及做版本化迁移和备份恢复。应用自己的账号、会话和元数据默认放在 SQLite。目标库支持 SQLite、MySQL、PostgreSQL 和 SQL Server。 软件介绍、界面图和操作步骤见 [docs/guide.md](docs/guide.md)。 结构遵循《Go 项目结构规范》v3.4:Gin、GORM、Fx,前端是 Vue 3 + JavaScript + Vite。业务没有 Service 层。规范第 20 章的商品样板不在本产品里,对应的增删改查和事务验收由连接管理承担。 ## 启动 需要 Go 1.22。首次启动会在数据目录生成管理员口令文件,生产环境则要求事先设置口令。 ```bash go run ./cmd/server --data-dir ./data ``` 开发环境打开文本日志: ```bash APP_PROFILE=dev go run ./cmd/server --data-dir ./data ``` 生产环境: ```bash APP_PROFILE=pro APP_AUTH_ADMIN_PASSWORD='至少八位' go run ./cmd/server --data-dir ./data ``` 默认监听 `127.0.0.1:8080`。浏览器打开该地址,使用 `admin` 和首次生成的口令登录,也可以注册成员账号。口令文件是 `data/initial-admin-password.txt`,权限 `0600`,日志只记录路径。`auth.allow_register` 为 false 时关闭注册。 常用参数: | 参数 | 环境变量 | 作用 | | --- | --- | --- | | `--base-dir` | `APP_BASE_DIR` | 程序根目录 | | `--config-dir` | `APP_CONFIG_DIR` | 配置目录,默认 `/configs` | | `--data-dir` | `APP_DATA_DIR` | 数据目录,默认 `/data` | | `--profile` | `APP_PROFILE` | 空、`dev` 或 `pro` | | `--set key=value` | 同名环境变量 | 覆盖单个配置,键与环境变量相同 | | `--version` | | 打印版本、提交号和构建时间 | 覆盖顺序是基础配置、profile 配置、环境变量、`--set`。布尔值只接受 `true` 或 `false`。空的口令、DSN 或密钥环境变量视为错误。 ## 配置 三份配置都在 `configs/`: - `application.yaml` 是默认值,不含口令、DSN 和密钥。 - `application-dev.yaml` 使用 debug 文本日志。 - `application-pro.yaml` 把会话 Cookie 标为 Secure,并拒绝 debug 日志。 应用库默认是数据目录里的 `app.db`。改用 MySQL、PostgreSQL 或 SQL Server 时设置 `APP_DATABASE_DRIVER` 和 `APP_DATABASE_DSN`,未知驱动或连接失败会中止启动,不会退回 SQLite。控制台保存的是目标库凭据,因此 `database.enabled=false` 和 `auth.enabled=false` 都会被拒绝。 字段、默认值和环境变量见 [docs/database.md](docs/database.md) 与 [docs/deployment.md](docs/deployment.md)。 ## 页面 登录后进入数据库工作台:左侧是数据库导航,中间是多标签 SQL 编辑器,底部是状态栏。菜单和工具栏打开其余功能。 - 导航按连接、模式、表、视图、存储过程、函数、字段和索引展开,可按名称过滤。双击表会打开只读查询,双击例程会打开定义。 - SQL 编辑器会高亮语法,并按所选连接和模式提示关键字、表和字段。编辑器和结果网格支持右键:执行选区、格式化、解释、注释、复制,以及按单元格生成 INSERT 或筛选。默认只读,写入要取消只读。 - 可以新建并编辑表、视图、存储过程和函数。建表时列类型按当前连接的数据库给出下拉选项。编辑已有表时会载入全部字段,包括完整类型、默认值和注释。SQLite 没有存储过程和函数。 - 可以登记兼容 OpenAI 协议的模型,并对当前 SQL 给出改写建议。 - 可以保存自己的 SQL 代码段,插入到编辑器,并按 JSON 导入或导出。每个账号只能看到自己的代码段。 - 性能页读取当前连接的库大小、会话和表规模。 - 连接可以按跳过、改名或报错导入 JSON,也可以导出。默认不写口令;勾选后文件里会带口令。 - 总览查看连接、查询、失败查询、迁移和备份数量。个人中心可以改显示名和邮箱。 - 可以新建并测试 SQLite、MySQL、PostgreSQL、SQL Server 连接。每个账号只能看到自己创建的连接。 - 可以编写、执行和回滚迁移。失败的脚本保持失败状态。 - 可以用 ETL 把一条查询的结果同步到另一张表。字段转换写在抽取语句里,装载时按字段对应追加,或清空后写入。 - 可以创建 SQL 备份并恢复。SQLite 还可以做 `VACUUM INTO` 文件副本,该副本只供下载。 接口说明见 [docs/api.md](docs/api.md)。 ## 构建与安装 ```bash npm --prefix web ci npm --prefix web run build CGO_ENABLED=0 GOTOOLCHAIN=local go test ./... ``` 发布包由 `scripts/build-platforms.ps1` 生成,Windows 入口是 `scripts/build-platforms.cmd`。脚本安装前端依赖、构建一次页面,再编译 `windows/amd64`、`linux/amd64`、`linux/arm64`。产物在 `release/<系统>-<架构>/`,包含二进制、配置模板、迁移 SQL、版本说明和校验值。不包含数据库、口令和日志。 桌面版覆盖 Windows x64、macOS x64 和 arm64、Linux x64 和 arm64。Windows 直接运行 `scripts\build-electron.cmd`,使用系统 PowerShell,不需要 Git Bash 或 WSL。Linux 和 macOS 运行 `./scripts/build-electron.sh`。两边都需要 Node.js 和 Go。安装包在 `electron/dist/`。窗口只打开本机服务,数据放在系统的用户数据目录。第一次打开会提示管理员账号 `admin` 和初始口令。 Linux 安装: ```bash sudo APP_AUTH_ADMIN_PASSWORD='至少八位' ./install-linux.sh ``` 程序在 `/opt/dbgo`,数据在 `/var/lib/dbgo`,服务用户是 `dbgo`,profile 是 `pro`。更新会先停止服务,再用新文件替换二进制,已有配置和数据保留。 ```bash systemctl status dbgo journalctl -u dbgo ``` ## 健康检查 - `GET /health/live` 返回 HTTP 200,`{"status":"live"}`。 - `GET /health/ready` 在迁移和数据库可用时返回 HTTP 200,否则 HTTP 503。 这两个地址不走 JSON API 的“业务错误也返回 200”约定。 ## 验证 ```bash node --test web/src/*.test.js GOTOOLCHAIN=local go test ./... ``` `internal/app/flow_test.go` 用真实 SQLite 走登录、连接、查询、目录、迁移、备份恢复和 HTTP 形状。MySQL、PostgreSQL、SQL Server 在本环境没有可用服务,只验证驱动可以编译以及标识符、占位符规则。矩阵见 [docs/acceptance.md](docs/acceptance.md)。