php小编百草在这里为大家解答一个常见问题:“为什么从golang连接Oracle数据库失败?”在使用golang连接Oracle数据库时,有时会遇到连接失败的问题。这可能是由于多种原因引起的,例如数据库配置错误、网络连接问题或者驱动程序不兼容等。本文将详细分析可能的原因,并提供解决方案,帮助读者解决这个问题,让连接Oracle数据库的过程更加顺利。
问题内容
dsn := `
user=admin,
password=temp1!a,
(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-seoul-1.oraclecloud.com))(connect_data=(service_name=gee9edfb93f3cf6_redglqweyxqefhhf_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="cn=adb.ap-seoul-1.oraclecloud.com, ou=oracle adb seoul, o=oracle corporation, l=redwood city, st=california, c=us")))
`
db, err := sql.open("godror", dsn)
if err != nil {
fmt.println(err)
return
}
defer db.close()
我创建了一个自治数据库,我尝试在golang中用上面的代码连接,但是无法连接,出现以下错误,如何连接,我找不到详细的手册,你能帮我吗? p>
go run main.go
parsing parameters "user=ADMIN,\n\tpassword=temp1!a,\n\t(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-seoul-1.oraclecloud.com))(connect_data=(service_name=gee9edfb93f3cf6_redglqweyxqefhhf_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn=\"CN=adb.ap-seoul-1.oraclecloud.com, OU=Oracle ADB SEOUL, O=Oracle Corporation, L=Redwood City, ST=California, C=US\")))": logfmt syntax error at pos 44 on line 3: unexpected '='
解决方法
我是oracle和golang的新用户,一切都是新的,我很难找到连接oracle和golang的文档。有手册,但我不太明白。
如果您在 stackoverflow 上发布问题,答案只是手册的链接。对于初学者来说,体验新环境确实很困难
我终于找到了解决方案,我的代码如下。即使您看不懂代码,在查看示例时一一思考也会很好。
package main
import (
"database/sql"
"fmt"
go_ora "github.com/sijms/go-ora/v2"
)
type DbInfo struct {
Username string
Password string
}
func main() {
serverInfo := DbInfo{
Username: "databaseUser",
Password: "databaseUserPassword",
}
urlOptions := map[string]string{
"TRACE FILE": "trace.log",
"SSL VERIFY": "FALSE",
}
connectString := "(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-seoul-1.oraclecloud.com))(connect_data=(service_name=gvsd1dfc9c3cdf6_racc7y8cxsvb16f0z_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))"
db, err := sql.Open("oracle", go_ora.BuildJDBC(serverInfo.Username, serverInfo.Password, connectString, urlOptions))
if err != nil {
panic(err.Error())
}
defer db.Close()
r, err := db.Exec(`create table users (
nickname varchar(20)
)`)
if err != nil {
panic(err.Error())
}
fmt.Println(r.LastInsertId())
}
上面的代码不需要钱包来进行 tls 访问。我也会在下面上传如何通过钱包访问它,供有需要的初学者使用。
以上就是为什么从golang连接oracle自治数据库失败?的详细内容,更多请关注编程网其它相关文章!