fix: 迁移后保留数据库连接供启动检查使用

This commit is contained in:
weijuesen
2026-08-13 23:45:20 +08:00
parent d01e245a2c
commit a1f1e7baaa
2 changed files with 2 additions and 3 deletions
+1 -3
View File
@@ -26,6 +26,7 @@ func RunMigrations(db *gorm.DB) error {
if err != nil {
return fmt.Errorf("加载嵌入式迁移文件: %w", err)
}
defer sourceDriver.Close()
databaseDriver, err := postgres.WithInstance(sqlDB, &postgres.Config{})
if err != nil {
@@ -36,9 +37,6 @@ func RunMigrations(db *gorm.DB) error {
if err != nil {
return fmt.Errorf("创建迁移实例: %w", err)
}
defer func() {
_, _ = m.Close()
}()
if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("执行数据库迁移: %w", err)
+1
View File
@@ -815,6 +815,7 @@ MVP 沿用 IoTDB(现状);TDengine 作为生产规模化候选(先基准
- 新增 `000001_baseline.up.sql` / `000001_baseline.down.sql`,覆盖当前 26 张业务表、索引和唯一约束;
- 新增 `internal/database/migrate.go``RunMigrations``CheckSchemaVersion``CurrentSchemaVersion`
- 上线前将 `000001_baseline.up.sql` 调整为 `CREATE TABLE/INDEX IF NOT EXISTS`,兼容已由 AutoMigrate 建表的开发库;
- 开发服务器首轮启动暴露 `migrate.Close()` 会关闭底层数据库连接,已改为只关闭迁移 source,保留 `sql.DB` 供后续启动检查使用;
- `database.Init` 改为先执行版本化迁移并校验 `schema_migrations`,生产环境忽略 `ALLOW_DEV_AUTOMIGRATE`;开发环境仅显式开启时允许 AutoMigrate
- `config.Config` 增加 `APP_ENV``ALLOW_DEV_AUTOMIGRATE`;README 与物理机部署指南补充迁移说明和环境变量;
- 新增 sqlmock 测试,覆盖版本匹配、版本不匹配、空版本、dirty 状态和嵌入式迁移文件解析。