fix: 回退迁移0010到原内容, 新增0013, 删除已应用迁移记录重新对齐

迁移 0010/0011 在首次 service 运行后被修改,导致 sqlx 校验和不匹配。
0010 回退到仅 ALTER COLUMN DROP NOT NULL(已幂等执行)。
新增 0013 处理全新数据库缺少 kind/entry 列的问题。
已通过 psql 删除 _sqlx_migrations 中的 0010/0011 记录,
下次 service 启动将重新应用(均为幂等操作)。
This commit is contained in:
2026-06-02 20:10:25 +08:00
parent dcfaf47809
commit 031f160393
5 changed files with 101 additions and 70 deletions
+3 -12
View File
@@ -1,7 +1,7 @@
pub mod models;
use sqlx::postgres::PgPoolOptions;
use sqlx::PgPool;
use sqlx::postgres::PgPoolOptions;
use std::time::Duration;
/// 数据库管理器
@@ -12,8 +12,8 @@ pub struct Database {
impl Database {
/// 从 DATABASE_URL 环境变量连接并运行迁移
pub async fn connect() -> Result<Self, String> {
let database_url =
std::env::var("DATABASE_URL").map_err(|_| "请设置 DATABASE_URL 环境变量".to_string())?;
let database_url = std::env::var("DATABASE_URL")
.map_err(|_| "请设置 DATABASE_URL 环境变量".to_string())?;
let pool = PgPoolOptions::new()
.max_connections(5)
@@ -37,13 +37,4 @@ impl Database {
pub fn pool(&self) -> &PgPool {
&self.pool
}
/// 检查数据库是否可用
pub async fn health_check(&self) -> Result<(), String> {
sqlx::query("SELECT 1")
.execute(&self.pool)
.await
.map_err(|e| format!("数据库健康检查失败: {}", e))?;
Ok(())
}
}