修改了db.rs中的create_pool()方法
This commit is contained in:
5
.env
5
.env
@@ -1,4 +1,5 @@
|
|||||||
# .env
|
# .env
|
||||||
DATABASE_URL=postgres://milkydata:44n6FdB8CdDAk5rk@127.0.0.1:5432/milkydata
|
DATABASE_URL=postgres://milkydata:44n6FdB8CdDAk5rk@154.37.213.24:5432/milkydata
|
||||||
WECHAT_APPID="wx5b00eb90621802f7"
|
WECHAT_APPID="wx5b00eb90621802f7"
|
||||||
WECHAT_SECRET="494efc513faa310bfba588bda2849bfd"
|
WECHAT_SECRET="494efc513faa310bfba588bda2849bfd"
|
||||||
|
JWT_SECRET="your_super_secret_key"
|
||||||
25
src/db.rs
25
src/db.rs
@@ -1,5 +1,6 @@
|
|||||||
use sqlx::PgPool;
|
use sqlx::{PgPool, postgres::PgPoolOptions};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
use std::error::Error;
|
||||||
|
|
||||||
// 从 models 模块引入 WeatherData 结构体
|
// 从 models 模块引入 WeatherData 结构体
|
||||||
use crate::models::WeatherData;
|
use crate::models::WeatherData;
|
||||||
@@ -97,9 +98,23 @@ pub async fn insert_weather_data(pool: &PgPool, weather_data: &WeatherData) -> R
|
|||||||
Ok(inserted_id)
|
Ok(inserted_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create_pool() -> Result<PgPool, sqlx::Error> {
|
pub async fn create_pool() -> Result<PgPool, Box<dyn Error>> {
|
||||||
dotenvy::dotenv().ok();
|
// 加载环境变量,非致命错误处理
|
||||||
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set in .env file");
|
if let Err(e) = dotenvy::dotenv() {
|
||||||
|
eprintln!("警告: 无法加载.env文件 - {}", e);
|
||||||
|
}
|
||||||
|
|
||||||
PgPool::connect(&database_url).await
|
// 获取数据库URL并提供友好错误信息
|
||||||
|
let database_url =
|
||||||
|
env::var("DATABASE_URL").map_err(|_| "环境变量DATABASE_URL未设置,请在.env文件中配置")?;
|
||||||
|
|
||||||
|
// 配置连接池参数
|
||||||
|
let pool = PgPoolOptions::new()
|
||||||
|
.max_connections(20) // 根据应用需求调整最大连接数
|
||||||
|
.acquire_timeout(std::time::Duration::from_secs(30)) // 获取连接的超时时间
|
||||||
|
.connect(&database_url)
|
||||||
|
.await
|
||||||
|
.map_err(|e| format!("数据库连接失败: {}", e))?;
|
||||||
|
|
||||||
|
Ok(pool)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user