如何使用 Diesel 和 SQLite 修复 Tauri - Rust 的数据库缓存?

问题描述 投票:0回答:1

我正在尝试使用 TauriSQLite 数据库以及 Diesel ORM 构建一个小型应用程序,每次我使用

yarn tauri dev
启动应用程序时,它都会从数据库的迁移脚本中带来第一个数据。即使我删除数据库它也会带来相同的数据。感觉就像数据以某种方式被缓存了。

对于 Cargo.toml 我有这个依赖项:

[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.2.4", features = ["shell-open"] }
diesel = { version = "2.0.0", features = ["sqlite", "returning_clauses_for_sqlite_3_35"] }
libsqlite3-sys = { version = "0.25.2", features = ["bundled"] }
diesel_migrations = {version = "2.0.0", features = ["sqlite"] }
remove_dir_all = "0.8.2"

我用来选择数据的方法是这样的:

#[derive(Identifiable, Queryable, Serialize, Deserialize, AsChangeset)]
#[serde(rename_all = "camelCase")]
#[diesel(table_name = pwn_contracts)]
pub struct Contract {
    pub id: i32,
    pub name: String,
}

pub fn contract_list(db_path: String) -> Vec<Contract> {
    let mut connection = establish_connection(&db_path);
    pwn_contracts::dsl::pwn_contracts
        .select(pwn_contracts::all_columns)
        .load::<Contract>(&mut connection)
        .expect("Loading contracts failed")
}

建立_连接方法如下所示:

pub fn establish_connection(path: &str) -> SqliteConnection { SqliteConnection::establish(path).unwrap_or_else(|_| panic!("Error connecting to database")) }
我也尝试过这个:

pub fn establish_connection(path: &str) -> SqliteConnection { SqliteConnection::establish(&format!("sqlite://{}?cache=none", path)).unwrap_or_else(|_| panic!("Error connecting to database")) }
但是我遇到了一些错误。

我错过了什么吗?我该如何解决这个问题?

rust rust-diesel tauri
1个回答
0
投票
如果您的架构复杂性需求不需要 SQLite,还有

Native DB,它更容易维护和开发。此处提供了 Tauri V2 的示例 native_db_tauri_vanilla

© www.soinside.com 2019 - 2024. All rights reserved.