使用Gorm连接PostgreSQL报错:failed to configure TLS (sslmode is invalid)
问题原因及解决办法
问题原因
你的DSN连接字符串格式错误,PostgreSQL的连接参数之间需要用空格分隔,而非逗号。逗号会导致Gorm/PostgreSQL驱动无法正确解析参数,进而误判sslmode参数无效。
解决办法
将DSN中的逗号全部替换为空格即可:
func setupDb() { // 修正后的DSN:用空格分隔参数 dsn := "host=localhost user=postgres password=postgres dbname=astra port=5432 sslmode=disable TimeZone=UTC" db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { logger_config.ErrorLogger.Println("Couldn't connect to database") // 建议直接panic或返回错误,避免后续使用未初始化的db实例 panic(err) } }
额外提示
- 确认PostgreSQL服务正在本地运行,端口5432未被占用
- 检查
postgres用户密码正确,且拥有astra数据库的访问权限 - 若需更严谨的配置,可使用
pg.Config结构体构建DSN,避免字符串拼接错误:
import "gorm.io/driver/postgres" func setupDb() { config := postgres.Config{ Host: "localhost", User: "postgres", Password: "postgres", DBName: "astra", Port: 5432, SSLMode: "disable", TimeZone: "UTC", } db, err := gorm.Open(postgres.New(config), &gorm.Config{}) if err != nil { logger_config.ErrorLogger.Println("Couldn't connect to database") panic(err) } }
内容的提问来源于stack exchange,提问作者Cross
相关产品推荐
相关产品推荐

