在使用 GORM 连接 SQL Server 数据库时,如果密码中包含特殊字符(如 @、:、/、?、& 等),可能会导致连接字符串解析错误。为了避免这个问题,你可以对密码中的特殊字符进行 URL 编码(Percent-encoding),然后将编码后的密码放入连接字符串中。
URL 编码密码:
使用 URL 编码对密码中的特殊字符进行转义。例如,如果密码是 P@ssw0rd!,经过 URL 编码后会变成 P%40ssw0rd%21。
修改连接字符串: 在连接字符串中使用编码后的密码。
假设你的连接字符串如下:
dsn := "sqlserver://username:P@ssw0rd!@localhost:1433?database=yourdb"
其中,密码 P@ssw0rd! 包含特殊字符 @ 和 !。你可以对密码进行 URL 编码:
@ 编码为 %40! 编码为 %21编码后的密码为 P%40ssw0rd%21。
修改后的连接字符串如下:
dsn := "sqlserver://username:P%40ssw0rd%21@localhost:1433?database=yourdb"
package main
import (
"gorm.io/driver/sqlserver"
"gorm.io/gorm"
)
func main() {
// 编码后的密码
dsn := "sqlserver://username:P%40ssw0rd%21@localhost:1433?database=yourdb"
db, err := gorm.Open(sqlserver.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// 使用 db 进行数据库操作
}
url.QueryEscape)来对密码进行编码。通过 URL 编码密码中的特殊字符,可以避免 GORM 连接 SQL Server 数据库时因密码包含特殊字符而导致的连接问题。确保在连接字符串中使用编码后的密码即可。