Rust diesel.rs和rocket.rs:don';我不明白为什么它需要一个数据库表
我是个生锈的新手,我遇到了一个无法解决的问题 我的Rust diesel.rs和rocket.rs:don';我不明白为什么它需要一个数据库表,rust,rust-diesel,rust-rocket,Rust,Rust Diesel,Rust Rocket,我是个生锈的新手,我遇到了一个无法解决的问题 我的Cargo.toml如下所示: [dependencies] rocket = "0.4.6" rocket_codegen = "0.4.6" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" [dependencies.diesel] version = "1.0.0&quo
Cargo.toml
如下所示:
[dependencies]
rocket = "0.4.6"
rocket_codegen = "0.4.6"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
[dependencies.diesel]
version = "1.0.0"
default-features = false
features = ["sqlite"]
[dependencies.rocket_contrib]
version = "0.4.6"
default-features = false
features = ["diesel_sqlite_pool"]
[global.databases.urls_db]
url = "urls.sqlite"
我在main.rs上有这样的连接:
使用rocket\u contrib::databases::diesel;
#[数据库(“URL_db”)]
结构UrlsDbConn(diesel::SqliteConnection);
根据模式,我仅有一个名为url
的表。rs
:
表格!{
URL(id){
id->文本,
uri->Text,
}
}
但当我尝试货物运行时
我得到:
错误:数据库配置失败:“url\u db”
=>错误:找不到此配置的名为“databases”的表
知道为什么吗
我只有一个databases
(复数)字符串,它位于Cargo.toml
(global.databases.url\u db
)上,这就是rocket.rs指示设置它的方式
编辑:固定排版;
EDIT2:数据库本身似乎很好:
main: /Users/carlos/Developer/caarlos0/beckerly/beckerly/urls.sqlite
sqlite> .tables
__diesel_schema_migrations urls
sqlite> select * from urls;
sqlite> insert into urls(id, uri) values ('g', 'https://google.com');
sqlite> select * from urls;
g|https://google.com
sqlite>
数据库配置应位于Rocket.toml
文件中:
[global.databases]
urls_db = { url = "urls.sqlite" }
文件明确指出:
然后,在Rocket.toml或等效的via环境变量中,在databases表中配置数据库的URL:
您是否检查了Sqlite中是否存在数据库名my_db?这可能是Sqlite所需要的吗?我认为db应该很好,它运行迁移很好(create table
)…我认为错误是指“table”,如TOML配置的一节所述。此外,my_db
字符串来自哪里?这里的名称是否存在差异:urls\u db
和my\u db
?我对Rocket不太了解,但您不应该使用Rocket.toml
而不是Cargo.toml
来配置数据库吗?