Maison > développement back-end > Golang > le corps du texte

Pourquoi la connexion à Oracle Autonomous Database depuis Golang échoue-t-elle ?

WBOY
Libérer: 2024-02-09 12:40:19
avant
458 Les gens l'ont consulté

Pourquoi la connexion à Oracle Autonomous Database depuis Golang échoue-t-elle ?

L'éditeur php Baicao est là pour répondre à une question commune à tout le monde : "Pourquoi la connexion à la base de données Oracle depuis Golang échoue-t-elle Lorsque vous utilisez Golang pour vous connecter à la base de données Oracle, vous rencontrerez parfois le problème d'un échec de connexion ?" . Cela peut être dû à diverses raisons, telles qu'une mauvaise configuration de la base de données, des problèmes de connexion réseau ou une incompatibilité de pilote. Cet article analysera en détail les causes possibles et fournira des solutions pour aider les lecteurs à résoudre ce problème et à rendre le processus de connexion à la base de données Oracle plus fluide.

Contenu des questions

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()
Copier après la connexion

J'ai créé une base de données autonome, j'ai essayé de me connecter avec le code ci-dessus dans golang, mais je n'ai pas pu me connecter, l'erreur suivante s'est produite, comment me connecter, je ne trouve pas de manuel détaillé, pouvez-vous m'aider ?

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 '='
Copier après la connexion

Solution

Je suis un nouvel utilisateur d'oracle et de golang, tout est nouveau et j'ai du mal à trouver la documentation pour connecter oracle et golang. Il existe un manuel mais je ne le comprends pas bien.

Si vous postez une question sur stackoverflow, la réponse n'est qu'un lien vers le manuel. Pour les débutants, il est vraiment difficile de découvrir un nouvel environnement

J'ai enfin trouvé la solution, mon code est le suivant. Même si vous ne savez pas lire le code, il est bon d'y réfléchir un par un en regardant les exemples.

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())
}
Copier après la connexion

Le code ci-dessus ne nécessite pas de portefeuille pour l'accès tls. Je téléchargerai également comment y accéder via le portefeuille ci-dessous pour les débutants qui en ont besoin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!