Heim  >  Artikel  >  Backend-Entwicklung  >  Warum schlägt die Verbindung zu Oracle Autonomous Database von Golang aus fehl?

Warum schlägt die Verbindung zu Oracle Autonomous Database von Golang aus fehl?

WBOY
WBOYnach vorne
2024-02-09 12:40:19462Durchsuche

Warum schlägt die Verbindung zu Oracle Autonomous Database von Golang aus fehl?

php-Editor Baicao ist hier, um eine häufig gestellte Frage zu beantworten: „Warum schlägt die Verbindung zur Oracle-Datenbank von Golang fehl?“ Wenn Sie Golang zum Herstellen einer Verbindung zur Oracle-Datenbank verwenden, tritt manchmal das Problem eines Verbindungsfehlers auf . Dies kann verschiedene Gründe haben, z. B. eine Fehlkonfiguration der Datenbank, Probleme mit der Netzwerkverbindung oder Treiberinkompatibilität. In diesem Artikel werden die möglichen Ursachen im Detail analysiert und Lösungen bereitgestellt, die den Lesern helfen, dieses Problem zu lösen und den Prozess der Verbindung mit der Oracle-Datenbank reibungsloser zu gestalten.

Frageninhalt

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

Ich habe eine autonome Datenbank erstellt, ich habe versucht, eine Verbindung mit dem obigen Code in Golang herzustellen, konnte aber keine Verbindung herstellen. Der folgende Fehler ist aufgetreten. Wie wird eine Verbindung hergestellt? Ich kann kein detailliertes Handbuch finden. Können Sie mir helfen? 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 '='

Lösung

Ich bin ein neuer Benutzer von Oracle und Golang, alles ist neu und ich habe Probleme, die Dokumentation zum Verbinden von Oracle und Golang zu finden. Es gibt ein Handbuch, aber ich verstehe es nicht ganz.

Wenn Sie eine Frage zu Stackoverflow posten, ist die Antwort nur ein Link zum Handbuch. Für Anfänger ist es wirklich schwierig, eine neue Umgebung kennenzulernen

Endlich habe ich die Lösung gefunden, mein Code lautet wie folgt. Auch wenn Sie den Code nicht lesen können, ist es gut, beim Betrachten der Beispiele einzeln darüber nachzudenken.

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

Der obige Code erfordert kein Wallet für den TLS-Zugriff. Ich werde unten auch hochladen, wie Anfänger, die es benötigen, über das Wallet darauf zugreifen können.

Das obige ist der detaillierte Inhalt vonWarum schlägt die Verbindung zu Oracle Autonomous Database von Golang aus fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen