Files
MyGoNavi/frontend
Syngnat b3855fa7c8 feat(table-designer): 支持选择默认 Schema (#850) (#861)
## 关联 Issue

Fixes #850

## 问题根因

表设计器只接收数据库名和表名,PostgreSQL/Kingbase 的 Schema
上下文没有从数据库树、数据视图继续传递;建表时也直接使用裸表名。因此同一数据库存在多个 Schema 时,创建和修改 SQL 会落到连接默认
Schema,无法选择目标 Schema。

## 修复方案

- 在数据库树、数据视图和表设计器入口之间传递 Schema 上下文。
- 为 PostgreSQL/Kingbase 表设计器增加 Schema 选择器,通过 Schema 列表和
`current_schema()` 初始化当前选择,并按连接记忆最近一次选择。
- 建表时使用所选 Schema 限定裸表名;改表、索引和注释操作统一解析所选 Schema,同时保留显式 `schema.table`
的优先级。
- 使用请求序号和最新选择引用避免异步元数据响应覆盖用户切换;连接被替换或删除时同步清理失效记忆。
- 增加 Schema 解析、连接记忆和入口上下文传递的回归测试。

## 验证结果

| 验证项 | 命令或步骤 | 结果 |
| --- | --- | --- |
| Schema 与入口定向回归 | `npm --prefix frontend test -- <相关测试文件>` | 通过,327/327
|
| 独立安全复核定向回归 | 3 个相关测试文件 | 通过,209/209 |
| TypeScript 检查 | `tsc --noEmit` | 通过 |
| 前端构建 | `npm --prefix frontend run build` | 通过 |
| 完整前端回归 | `npm --prefix frontend test` | 通过,447 个测试文件、3793/3793 |
| 桌面与窄屏 GUI 验收 | 浏览器操作 PostgreSQL/Kingbase 表设计器 Schema 展示、选择及上下文传递路径 |
通过,无布局重叠或控制台错误 |
| 差异检查 | `git diff --check`、`git diff --cached --check` | 通过 |

## 风险与兼容性

Schema 选择能力仅对 PostgreSQL 和 Kingbase 开启;其他数据库类型继续沿用原有数据库/Schema 解析和 UI
行为。未修改后端 API、持久化数据格式或数据库 `search_path`。当 `current_schema()`
查询失败且没有显式或已记忆 Schema 时保持裸表名,交由数据库连接默认行为处理。

## 回滚方式

回滚提交 `92b103a23ce243650025c1c047167be61394d9ed` 即可恢复原行为;本次改动不迁移或修改用户数据。
2026-08-06 21:00:36 +08:00
..

Lite DB Client

一个基于 Electron、React 和 Ant Design 构建的轻量级 MySQL 数据库客户端。

功能特性

  • 连接管理: 轻松创建和保存 MySQL 数据库连接。
  • 结构浏览: 通过树形视图快速查看数据库和表结构。
  • 数据查看: 双击表名即可查看数据(支持分页/滚动加载)。
  • SQL 编辑器: 集成 Monaco Editor提供强大的 SQL 编写和执行体验(支持语法高亮)。
  • 多标签页: 支持多窗口并行操作,类似 Navicat 的使用体验。

🛠️ 技术栈

  • Electron: 桌面端运行环境。
  • React + Vite: 前端框架与极速构建工具。
  • Ant Design: 企业级 UI 组件库。
  • Zustand: 轻量级状态管理。
  • MySQL2: 高性能 Node.js MySQL 驱动。
  • Monaco Editor: VS Code 同款代码编辑器。

🚀 快速开始

  1. 安装依赖

    npm install
    
  2. 启动开发模式

    npm run electron:dev
    

    这将启动 Vite 开发服务器并打开 Electron 窗口。

  3. 构建生产版本

    npm run build
    

    构建完成的安装包dmg/exe/deb将位于 dist/release/ 目录下。

⚠️ 说明

  • 本项目目前处于 MVP (最小可行性产品) 阶段。
  • 当前版本主要支持 MySQL 数据库。
  • 密码目前保存在内存/本地存储中,请注意在生产环境中的安全性。

希望这款轻量级工具能成为你开发路上的好帮手!