ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Beekeeper Studio 数据存储位置全解析:app.db 在哪儿、存了什么、如何直接访问

Beekeeper Studio 数据存储位置全解析:app.db 在哪儿、存了什么、如何直接访问 Beekeeper Studio 数据存储位置全解析app.db 在哪儿、存了什么、如何直接访问【免费下载链接】beekeeper-studioModern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.项目地址: https://gitcode.com/GitHub_Trending/be/beekeeper-studioBeekeeper Studio 是支持 MySQL、PostgreSQL、SQLite、SQL Server 等数据库的现代开源 SQL 客户端当你保存数据库连接、收藏 SQL 查询时这些数据并不会散落在应用安装目录而是统一持久化到应用配置目录下的一个 SQLite 数据库文件app.db中。本文以官方文档>appDbPath: join(userDirectory, isDevEnv ? app-dev.db : app.db),其中userDirectory来自 Electron 的app.getPath(userData)mainPlatformInfo.tslet userDirectory testMode ? ./tmp : e.app.getPath(userData)需要特别注意的是开发模式与发布版本使用不同的数据库文件源码中通过isDevEnv即!e.app.isPackaged区分开发模式从源码直接运行使用app-dev.db正式发布版使用app.db。因此如果你同时跑过开发版和正式版会发现两个文件并存互不干扰。二、各操作系统下的 userData 目录位置userData目录由操作系统按各自规范分配官方文档给出的三个平台默认位置如下操作系统userData 目录路径Windows用户目录\AppData\Roaming\beekeeper-studiomacOS~/Library/Application Support/Beekeeper StudioLinux~/.config/beekeeper-studio几个实操要点macOS 目录是隐藏的~/Library目录在 Finder 中默认不可见。文档提示可点击 Finder 菜单栏的Go - Go to Folder前往文件夹直接输入~/Library/Application Support/Beekeeper Studio回车即可打开无需修改系统显示隐藏文件的设置。最终文件在以上目录中正式版本的数据文件即为app.db除此之外同一目录下还存放着plugins/插件与driver-deps/数据库驱动依赖等子目录见 mainPlatformInfo.ts属于应用的配置目录备份时建议一并考虑。便携版Portable特殊路径Windows 便携版不会使用系统 userData而是跟随可执行文件位置。源码中当检测到PORTABLE_EXECUTABLE_DIR环境变量时会将 userData 指向可执行文件旁的beekeeper_studio_data目录mainPlatformInfo.ts并标记isPortable: true。如果你使用便携版不要按上文默认路径寻找数据app.db实际在beekeeper_studio_data目录内。三、app.db 里存了什么实体表与迁移历史app.db不是黑盒其表结构与应用内 TypeORM 注册的实体一一对应。应用初始化时通过 Connection.ts 以better-sqlite3驱动建立连接this.connection new DataSource({ database: this.path, type: better-sqlite3, synchronize: false, migrationsRun: false, entities: models, logging: this.logging, ...options })从 Connection.ts 与 models 目录 可以确认当前主要数据表包括saved_connection保存的数据库连接含连接类型、主机、端口、用户名、SSH 配置等used_connection/used_query最近使用的连接与最近执行的查询历史favorite_query收藏/保存的 SQL 查询user_setting用户偏好设置主题、快捷键等pinned_connection/pinned_entity/user_pin置顶的连接、对象与用户钉选open_tab未关闭的标签页状态connection_folder/query_folder连接分组与查询分组新版本文件夹功能plugin_data/encrypted_plugin_data插件存储的数据后者为加密数据formatter_presetSQL 格式化预设token_cache/cloud_credential云端相关凭据缓存license_key、installation_id、query_audit、tabulator_persistence等。表结构的演进全部通过 migration 目录 中的迁移脚本管理。最早的初始化迁移 20200101.js 直接以 SQL 建表例如CREATE TABLE IF NOT EXISTS saved_connection ( id integer PRIMARY KEY AUTOINCREMENT NOT NULL, connectionType varchar NOT NULL, host varchar, port integer, username varchar, defaultDatabase varchar, path varchar, uri varchar, uniqueHash varchar(500) NOT NULL, name varchar NOT NULL, password varchar, ... );值得关注的是安全设计saved_connection表中的password字段并非明文。迁移脚本 20200917-encrypt-passwords.js 表明早期版本对已保存的密码执行了加密迁移后续还有 20200917-encrypt-passwords.js 相关的密钥管理设计encryption_key.ts。因此直接打开app.db查看连接密码会得到密文这是预期行为不必怀疑数据损坏。四、从 Beekeeper Studio 内部直接访问Help - Add Beekeepers Database官方文档提供了一条最便捷的访问路径导航到菜单Help - Add Beekeepers Database应用会自动为你添加一个名为 Beekeepers Database 的数据库连接——它指向的就是应用自己的app.db。之后你可以像使用任何普通 SQLite 连接一样用它浏览保存的数据、导出 SQL 查询甚至执行任意 SQL。这条功能的完整调用链在源码中可以完整印证菜单定义MenuItems.ts 中注册菜单项addBeekeeper标签为 Add Beekeepers Database原生侧处理NativeMenuActionHandlers.ts 收到点击后向渲染进程发送AppEvent.beekeeperAdded事件前端侧处理AppEventHandler.js 收到事件后先查询是否已存在指向appDbPath的连接若不存在则以sqlite连接类型创建一个新连接async addBeekeeper() { const existing await this.vueApp.$util.send(appdb/saved/findOneBy, { options: { defaultDatabase: platformInfo.appDbPath }}); if (!existing) { const nu {}; nu.connectionType sqlite nu.defaultDatabase platformInfo.appDbPath nu.name Beekeepers Database nu.labelColor orange await this.vueApp.$util.send(appdb/saved/save, { obj: nu }); } this.vueApp.$noty.success(Beekeepers Database has been added to your Saved Connections) this.vueApp.$store.dispatch(data/connections/load) }可以看到该连接的关键参数连接类型为sqlite、defaultDatabase直接指向platformInfo.appDbPath即第一节中的app.db全路径。该菜单项是幂等的——重复执行不会创建重复连接并且会自动刷新已保存连接列表。五、备份、恢复与迁移建议由于连接、查询、设置都集中在app.db备份应用数据的最简单方式就是备份整个 userData 目录WindowsAppData\Roaming\beekeeper-studiomacOS~/Library/Application Support/Beekeeper StudioLinux~/.config/beekeeper-studio。此外Beekeeper Studio 内置了数据库级备份/恢复功能具体操作可参考官方用户指南 backup-restore.md。几点实践建议升级或迁移设备前先通过内置备份功能或直接复制app.db做一次快照恢复数据将备份的app.db放回对应平台的 userData 目录后重启应用即可应用每次启动都会执行 migration 校验/升级表结构老版本数据库文件可被新版本自动升级反之不一定兼容跨大版本恢复时建议确认版本方向清理数据直接删除app.db会让应用回到全新安装状态连接、收藏查询、设置全部重置但不影响已连接的远程数据库本身仅删除客户端侧的记录。六、常见问题排查思路找不到 app.db先确认你使用的是正式版还是开发版开发版文件名为app-dev.dbmacOS 用户记得~/Library默认隐藏用Go - Go to Folder输入完整路径Windows 便携版数据在可执行文件旁的beekeeper_studio_data目录。想导出收藏的 SQL使用Help - Add Beekeepers Database建立内置连接然后对favorite_query、used_query等表执行SELECT并导出结果导出功能参考 contenteditable="false">【免费下载链接】beekeeper-studioModern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.项目地址: https://gitcode.com/GitHub_Trending/be/beekeeper-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表