修复数据库时区问题:在 DSN 连接字符串中添加 TimeZone=Asia/Shanghai 参数
问题描述: - PostgreSQL 数据库时区设置为 UTC - 应用代码使用本地时区(Asia/Shanghai, UTC+8) - 导致数据库存储的时间戳相差 8 小时 解决方案: - 在 pkg/database/postgres.go 的 DSN 构建中添加 TimeZone=Asia/Shanghai - PostgreSQL 驱动会自动处理时区转换(应用时区 ↔ UTC) - 与测试代码保持一致(测试中已使用该参数) 影响范围: - 新写入的时间戳将正确转换为 UTC 存储 - 从数据库读取的时间自动转换为应用时区 - 需要重启服务使配置生效
This commit is contained in:
@@ -16,7 +16,7 @@ import (
|
||||
// InitPostgreSQL 初始化 PostgreSQL 数据库连接
|
||||
func InitPostgreSQL(cfg *config.DatabaseConfig, log *zap.Logger) (*gorm.DB, error) {
|
||||
// 构建 DSN (数据源名称)
|
||||
dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=%s",
|
||||
dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=%s TimeZone=Asia/Shanghai",
|
||||
cfg.Host,
|
||||
cfg.Port,
|
||||
cfg.User,
|
||||
|
||||
Reference in New Issue
Block a user