我正在尝试使用 Tauri 和 SQLite 数据库以及 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"))
}
但是我遇到了一些错误。我错过了什么吗?我该如何解决这个问题?
Native DB,它更容易维护和开发。此处提供了 Tauri V2 的示例 native_db_tauri_vanilla。