#背景:
平时使用golang 都是连接mysql库,最近需要连接oracle库,经调研后 使用godror,当密码中含有特殊字符的情况需要特殊处理。

#遇到问题
在测试环境中,使用如下代码测试是没问题的

connString := "oracle://user:pass@ip:port/tnsname"

#修改过程
经查官方文档修改成如下

connectstr := connstring+":"+port+"/"+dbname
connString := fmt.Sprintf("`user=\"%s\" password=\"%s\" connectString=\"%s\" poolSessionTimeout=\"200s\"`",user,passwd,connectstr)

db.Open时候没有问题 但执行 query时候报错,提示params=user= password="SECRET-*****=" …ORA-24415: Missing or null username.
我们把连接串打出来,明显看到了user=
… 但执行时就是报错。 折腾了N小时。。。

#解决问题

connString := user+"/"+passwd+"@"+connstring+":"+port+"/"+dbname

密码也不需要转义。