navicat 不支持远程连接 sqlite,仅能打开本地 .db 文件;所谓“局域网连接”实为通过挂载网络共享为本地路径实现,且多机并发访问极易导致锁冲突或数据损坏。
navicat 根本不支持远程连接 sqlite —— 它只能打开本地文件,所谓“局域网连接”是误解。
SQLite 没有服务端,也就没有“连接”这回事
SQLite 是嵌入式数据库,运行在应用进程内,不监听端口、不接受 TCP 连接。Navicat 的“SQLite 连接”功能只做一件事:sqlite3_open_v2() 打开一个本地路径的 .db 文件。它压根没有网络通信模块,填 IP 或端口只会报错或静默失败。
- 你看到的“主机”“端口”字段是 Navicat 为统一 UI 留的空位,对 SQLite 完全无效
- 尝试填
192.168.1.100或5432不会触发任何网络请求,Navicat 会直接忽略或报unable to open database file - 所谓“局域网访问”,实际只能靠共享文件系统(如 Windows 共享文件夹、Samba、NFS)让 Navicat 能读到那个
.db文件
想让多台机器访问同一个 SQLite 文件?先认清风险
SQLite 支持多进程读,但写操作必须串行。跨网络文件系统(尤其是 SMB/CIFS)的锁机制不可靠,极易导致 database is locked 或数据损坏。
- Windows 共享文件夹 + Navicat:大概率卡死在
SQLITE_BUSY,重试多次后可能写入失败 - macOS AFP/Samba:文件锁同步延迟高,
VACUUM或事务提交可能静默失败 - 绝对不要让两个 Navicat 实例同时打开同一网络路径的
app.db - 如果真需要多点访问,换 PostgreSQL / MySQL;SQLite 只适合单机、单进程主控场景
如果非要从另一台电脑用 Navicat 打开 SQLite 文件
唯一可行路径是把 .db 文件放到可被 Navicat 访问的本地路径——通过挂载网络磁盘实现,而非“连接”。
- Windows:用
net use Z: \192.168.1.100share映射为本地盘符,Navicat 中选Z:datapp.db - macOS:用 Finder → “连接服务器” →
smb://192.168.1.100/share,挂载后路径类似/Volumes/share/data/app.db - Linux:挂载
//192.168.1.100/share到本地目录,确保 Navicat 进程有读写权限(注意 SELinux/AppArmor 限制) - 关键检查项:
ls -l /path/to/app.db必须显示可读可写,且file /path/to/app.db返回SQLite 3.x database
SQLite 的“文件即数据库”模型决定了它和网络共享天然是冲突的。很多人卡在这里,不是配置错了,而是试图用错工具解决错问题。











