首頁 > 後端開發 > Golang > 為什麼從golang連接oracle自治資料庫失敗?

為什麼從golang連接oracle自治資料庫失敗?

WBOY
發布: 2024-02-09 12:40:19
轉載
498 人瀏覽過

為什麼從golang連接oracle自治資料庫失敗?

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中用上面的程式碼連接,但是無法連接,出現以下錯誤,如何連接,我找不到詳細的手冊,你能幫我嗎?

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中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板