如何查看Fly.io托管的SQLite数据库并操作线上数据
Remix Indie Stack Fly.io 部署相关问题解答
核心疑问明确答复
- 访问线上SQLite数据库不需要单独安装系统级SSH客户端,Windows环境下flyctl本身内置SSH连接组件,你遇到的握手认证报错和SSH是否安装无关,是权限证书配置问题。
- Fly.io平台上看不到独立的SQLite数据库资源是正常现象,SQLite是文件型数据库,没有独立运行的服务实例,你的线上库文件就存在应用绑定的持久化卷上,默认路径为
/data/sqlite.db,配置在项目的Prisma配置文件中,应用重启不会丢失数据。
SSH连接报错修复步骤
按顺序执行以下命令即可修复认证失败问题,修复后就能用README提供的命令连接数据库:
- 先升级本地flyctl到最新版本:
flyctl.exe version update - 为当前设备签发Fly.io实例的SSH访问证书:
fly ssh issue --agent - 证书签发完成后,执行
fly ssh console -C database-cli,会自动拉起Prisma Studio的线上数据库代理,你可以直接在本地浏览器打开可视化界面,直接操作线上表的所有数据,不需要额外装数据库客户端。
无SSH场景下操作线上数据库的替代方案
如果暂时不想配置SSH,可以用以下两种方案操作线上数据:
- 方案1:文件传输法
- 通过flyctl的sftp能力连接应用实例,把持久化卷上的
/data/sqlite.db文件下载到本地项目目录 - 本地执行
npx prisma studio即可浏览、编辑下载的库文件 - 编辑完成后,先停掉线上应用避免并发写入冲突,再把修改后的db文件传回原路径覆盖,重启应用即可生效
- 通过flyctl的sftp能力连接应用实例,把持久化卷上的
- 方案2:临时路由挂载法
- 在项目Remix路由目录下新增一个仅自己可访问的管理员路由,服务端直接挂载Prisma Studio的请求处理逻辑
- 重新部署应用后,通过线上域名访问该路由即可直接操作数据库
- 操作完成后务必删除该路由重新部署,避免公网暴露数据库入口造成数据泄露。
Prisma + SQLite 快速上手技巧
日常使用只需要记住几个核心命令即可,不需要提前啃完所有文档:
- 修改完
prisma/schema.prisma里的表结构定义后,直接执行npx prisma db push就能把结构同步到对应数据库,SQLite场景下这个命令比生成迁移文件的流程更轻便 - 任何时候要可视化查看、编辑表数据,直接执行
npx prisma studio,会自动在本地5555端口启动web管理界面,不需要安装第三方数据库客户端工具 - 写业务逻辑、批量导数据时,直接引入项目里生成的Prisma Client实例调用方法即可,会自动做类型校验,大部分场景不需要手写原生SQL
学习建议
- 先过一遍Prisma的基础CRUD操作语法,1小时左右就能覆盖90%日常开发场景
- 转变服务端数据库的使用思路:SQLite是单文件数据库,不存在独立的数据库服务进程,不要尝试在云平台控制台找独立的数据库实例
- SQLite并发写入能力有限,适合中小流量的个人站点,后续如果站点流量上涨,直接按Indie Stack的文档切换为Postgres数据库即可,Prisma层的代码几乎不需要改动。
内容的提问来源于stack exchange,提问作者WildThing
相关产品推荐
相关产品推荐

