GORM连接SQL Server数据库时,密码包含特殊字符(例如“@”)会导致连接失败。本文提供一种可靠的解决方案,避免直接拼接连接字符串,从而解决此问题。
问题:
当使用类似以下连接字符串时,GORM无法正确解析包含特殊字符的密码:
sqlserver://xiangyi:xiayi3601@@49.294.216.37:1433?database=xydb
解决方案:
推荐使用fmt.Sprintf
函数构建连接字符串,将用户名、密码、服务器地址等参数分别传入,避免特殊字符干扰:
import ( "fmt" "gorm.io/driver/sqlserver" "gorm.io/gorm" ) func main() { server := "49.294.216.37" user := "xiangyi" password := "xiayi3601@@" port := 1433 database := "xydb" connectionString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s", server, user, password, port, database) db, err := gorm.Open(sqlserver.Open(connectionString), &gorm.Config{}) if err != nil { panic(err) } defer db.Close() // ... your database operations ... }
通过这种方法,可以有效防止特殊字符导致的连接错误,确保GORM能够正确连接到SQL Server数据库。 请注意替换示例中的参数为您的实际数据库信息。 代码中添加了必要的import
语句和错误处理。