#背景:
平时使用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
密码也不需要转义。