修改了db.rs中的create_pool()方法
This commit is contained in:
3
.env
3
.env
@@ -1,4 +1,5 @@
|
||||
# .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_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::error::Error;
|
||||
|
||||
// 从 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)
|
||||
}
|
||||
|
||||
pub async fn create_pool() -> Result<PgPool, sqlx::Error> {
|
||||
dotenvy::dotenv().ok();
|
||||
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set in .env file");
|
||||
pub async fn create_pool() -> Result<PgPool, Box<dyn Error>> {
|
||||
// 加载环境变量,非致命错误处理
|
||||
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