From b9e29b423feca2c16ea30eece2ace2c9cec17d44 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Mon, 4 May 2026 21:45:16 +0800 Subject: [PATCH] fix: update SQLite connection options for network paths --- src-tauri/src/db/sqlite.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/db/sqlite.rs b/src-tauri/src/db/sqlite.rs index 8254dc333..0cd77ac1f 100644 --- a/src-tauri/src/db/sqlite.rs +++ b/src-tauri/src/db/sqlite.rs @@ -5,10 +5,14 @@ use std::time::{Duration, Instant}; use super::{ColumnInfo, DatabaseInfo, ForeignKeyInfo, IndexInfo, QueryResult, TableInfo, TriggerInfo}; pub async fn connect_path(path: &str) -> Result { - let options = SqliteConnectOptions::new() + let mut options = SqliteConnectOptions::new() .filename(path) .create_if_missing(true); + if is_network_path(path) { + options = options.vfs("unix-nolock"); + } + SqlitePoolOptions::new() .max_connections(5) .acquire_timeout(Duration::from_secs(10)) @@ -18,6 +22,10 @@ pub async fn connect_path(path: &str) -> Result { .map_err(|e| format!("SQLite connection failed: {e}")) } +fn is_network_path(path: &str) -> bool { + path.starts_with("\\\\") || path.starts_with("//") || path.contains("wsl.localhost") || path.contains("wsl$") +} + pub async fn list_databases(_pool: &SqlitePool) -> Result, String> { Ok(vec![DatabaseInfo { name: "main".to_string() }]) }