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自治資料庫失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!