我正在尝试从rusqlite => sqlx转换。
从rusqlite
打开连接会调用SQLite::open,并创建db文件。如下操作:
use rusqlite::Connection;
Connection::open(db_filename)
字符串
然而,我在sqlx端遵循文档(https://github.com/launchbadge/sqlx#connecting),他们立即启动我创建一个池:
use sqlx::sqlite::{SqlitePoolOptions};
SqlitePoolOptions::new()
.max_connections(1)
.connect(&format!("sqlite://{}", db_filename))
.await
.map_err(|err| format!("{}\nfile: {}", err.to_string(), db_filename))?;
型
这实际上产生Result<_, String>
消息:
Error: "error returned from database: unable to open database file\nfile: /path/to/my.db"
型
我不清楚在sqlx
世界中如何在第一次 Boot 时实际写入这些db文件。
小费?
3条答案
按热度按时间zsbz8rwp1#
我在他们的问题跟踪器中发现了一个问题,你可以在文件名上使用
?mode=rwc
查询样式参数。https://github.com/launchbadge/sqlx/issues/1114#issuecomment-827815038
添加查询解决了问题。
au9on6nz2#
您还可以将SqliteConnectOptions与Pool::connect_with结合使用于较新版本的sqlx。
字符串
SqliteConnectOptions
非常灵活,支持许多有用的选项,例如加载扩展。mu0hgdu03#
标准做法是设置您的DATABASE_URL
字符串
然后运行
型