L'éditeur php Baicao a rencontré un problème lors de l'utilisation de Golang pour se connecter à rethinkDB. Le message d'erreur indiquant qu'il ne pouvait pas se connecter au serveur rethinkDB l'a dérouté. En réponse à ce problème, il a effectué une série de dépannage et de débogage, et a finalement trouvé une solution. Dans cet article, nous discuterons des problèmes possibles et des solutions lors de la connexion à rethinkDB depuis Golang.
J'utilise rethinkdb pour exécuter un conteneur Docker, puis j'exécute go file pour me connecter à la base de données, mais une erreur se produit lors de la connexion.
Bonjour à tous. J'ai besoin d'aide pour rethinkdb, j'ai exécuté un conteneur Docker :
docker run --name rth -p 8100:8080 -d rethinkdb
Ensuite, visitez http://localhost:8100 et il y a la page d'accueil de rethinkdb, donc tout va bien. Mais lorsque j'essaie de me connecter à la base de données depuis Golang, j'obtiens des erreurs :
package main import ( r "gopkg.in/rethinkdb/rethinkdb-go.v6" "log" "fmt" ) func main() { _, err := r.connect(r.connectopts{ address: "localhost:28015", database: "test", }) if err != nil { fmt.println(err) log.fatal("could not connect") } }
J'ai eu cette erreur après avoir exécuté go run main.go
:
rethinkdb: dial tcp 127.0.0.1:28015: connect: connection refused 2023/05/18 01:38:39 could not connect exit status 1
Merci La raison pour laquelle cela se produit est que le port est incorrect (28015), mais si je le change, sauf le port = 8100, j'obtiens le même problème. Si je saisis 8100 au lieu de 28015 et que j'obtiens cette erreur :
rethinkdb: Unexpected EOF: HTTP/ 400 Bad Request 2023/05/18 01:38:52 Could not connect exit status 1
Peut-être que quelqu'un sait comment résoudre ce problème)
-p 8100:8080
将容器中的端口 8080
映射到主机上的端口 8100
。您没有映射任何其他端口,因此,当您尝试访问 8100
以外的任何端口(例如 127.0.0.1:28015
) lorsque votre demande n'atteint pas le conteneur. Il se peut que quelque chose d'autre sur l'hôte écoute sur ce port, ou que rien n'écoute.
Vous avez mentionné que vous avez accès à 上的管理界面http://localhost:8100
; si vous vérifiez les journaux, vous remarquerez quelque chose comme :
listening for administrative http connections on port 8080 listening for client driver connections on port 28015
Le serveur écoute donc les connexions sur plusieurs ports. port 8080
(映射到 8100
)是管理 http 接口,28015
用于驱动程序连接(这在 文档)。您的代码正在尝试连接到端口 28015
(ce qui est correct), mais vous n'avez pas mappé le port donc il n'est pas accessible sur l'hôte, corrigez ceci :
docker run --name rth -p 8100:8080 -p 28015:28015 -d rethinkdb
Cela changera le port dans le conteneur en 28015
映射到主机上的端口 28015
(vous pouvez utiliser un autre port hôte si nécessaire ; n'oubliez pas de mettre à jour votre code). Nous pouvons maintenant connecter avec succès les éléments suivants :
package main import ( "fmt" "log" r "gopkg.in/rethinkdb/rethinkdb-go.v6" ) func main() { _, err := r.Connect(r.ConnectOpts{ Address: "localhost:28015", Database: "test", }) if err != nil { fmt.Println(err) log.Fatal("Could not connect") } fmt.Println("Connected") }
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!