修改了db.rs中的create_pool()方法

This commit is contained in:
2025-09-24 14:07:31 +08:00
parent ef326d82ed
commit 5c269328ee
2 changed files with 23 additions and 7 deletions

5
.env
View File

@@ -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"

View File

@@ -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)
} }