sqlx默认不指定数据库,怎样解决下面的问题,异步感觉还是有点懵,或者sqlx有没有切换数据库的方法(暂时没找到)
use sqlx::{mysql::MySqlPoolOptions, Executor};
#[tokio::main]
async fn main() -> Result<(), sqlx::Error> {
let pool = MySqlPoolOptions::new()
.connect("mysql://root:123456@localhost")
// 没有指定数据库
.await?;
pool.execute("use test").await?;
// tokio::time::sleep(std::time::Duration::from_secs(1)).await;
// 这里加上这一句,运行正常
let row = sqlx::query("select * from a").fetch_all(&pool).await?;
// ⬆这里报错
println!("{:?}", row);
Ok(())
}
报错:
Error: Database(MySqlDatabaseError { code: Some("3D000"), number: 1046, message: "No database selected" })
1
共 3 条评论, 1 页
评论区
写评论找到问题了,原因是use语句和select语句使用了不同的connection,导致"No database selected"的报错,MySqlPoolOptions强制设置max_connections(1)可以粗暴解决问题
嗯嗯,有时候就是理解不对
--
👇
gorust21: 好好看文档 localhost/数据库 ,或者理解下数据库url
好好看文档 localhost/数据库 ,或者理解下数据库url