fix: 迁移后保留数据库连接供启动检查使用
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 状态和嵌入式迁移文件解析。
|
||||
|
||||
Reference in New Issue
Block a user