Rumah >pembangunan bahagian belakang >Golang >Mengapa sambungan ke Pangkalan Data Autonomi Oracle dari golang gagal?

Mengapa sambungan ke Pangkalan Data Autonomi Oracle dari golang gagal?

WBOY
WBOYke hadapan
2024-02-09 12:40:19494semak imbas

Mengapa sambungan ke Pangkalan Data Autonomi Oracle dari golang gagal?

editor php Baicao hadir untuk menjawab soalan biasa untuk semua orang: "Mengapa sambungan ke pangkalan data Oracle dari golang gagal?" . Ini mungkin disebabkan oleh pelbagai sebab, seperti salah konfigurasi pangkalan data, isu sambungan rangkaian atau ketidakserasian pemandu. Artikel ini akan menganalisis kemungkinan punca secara terperinci dan menyediakan penyelesaian untuk membantu pembaca menyelesaikan masalah ini dan menjadikan proses penyambungan ke pangkalan data Oracle lebih lancar.

Isi soalan

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()

Saya mencipta pangkalan data autonomi, saya cuba menyambung dengan kod di atas dalam golang, tetapi tidak dapat menyambung, ralat berikut berlaku, bagaimana untuk menyambung, saya tidak dapat mencari manual terperinci, bolehkah anda membantu saya? 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 '='

Penyelesaian

Saya pengguna baharu oracle dan golang, semuanya baharu dan saya menghadapi masalah mencari dokumentasi untuk menyambung oracle dan golang. Ada manual tapi saya tak berapa faham.

Jika anda menyiarkan soalan pada stackoverflow, jawapannya hanyalah pautan ke manual. Bagi pemula, memang susah nak alami persekitaran baru

Saya akhirnya menemui penyelesaiannya, kod saya adalah seperti berikut. Walaupun anda tidak boleh membaca kod itu, adalah baik untuk memikirkannya satu per satu sambil anda melihat contoh.

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())
}

Kod di atas tidak memerlukan dompet untuk akses tls. Saya juga akan memuat naik cara mengaksesnya melalui dompet di bawah untuk pemula yang memerlukannya.

Atas ialah kandungan terperinci Mengapa sambungan ke Pangkalan Data Autonomi Oracle dari golang gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam