Ralat menyambung ke rethinkDB daripada golang

WBOY
Lepaskan: 2024-02-12 10:45:08
ke hadapan
471 orang telah melayarinya

从 golang 连接到 rethinkDB 时出错

editor php Baicao menghadapi masalah semasa menggunakan golang untuk menyambung ke rethinkDB. Mesej ralat bahawa dia tidak dapat menyambung ke pelayan rethinkDB mengelirukan dia. Sebagai tindak balas kepada masalah ini, dia menjalankan beberapa siri penyelesaian masalah dan penyahpepijatan, dan akhirnya menemui penyelesaian. Dalam artikel ini, kami akan membincangkan kemungkinan masalah dan penyelesaian apabila menyambung ke rethinkDB daripada golang.

Kandungan soalan

Saya menggunakan rethinkdb untuk menjalankan bekas docker dan kemudian menjalankan go file untuk menyambung ke pangkalan data, tetapi ralat berlaku semasa menyambung.

Salam semua. Saya memerlukan bantuan dengan rethinkdb, saya menjalankan bekas buruh pelabuhan:

docker run --name rth -p 8100:8080 -d rethinkdb
Salin selepas log masuk

Kemudian lawati http://localhost:8100 dan terdapat halaman utama rethinkdb, jadi everythink baik-baik saja. Tetapi apabila saya cuba menyambung ke pangkalan data dari golang, saya mendapat beberapa ralat:

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") } }
Salin selepas log masuk

Saya mendapat ralat ini selepas berlarigo 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
Salin selepas log masuk

Terima kasih Sebab ini berlaku ialah port tidak betul (28015), tetapi jika saya menukarnya, kecuali port = 8100, saya mendapat masalah yang sama. Jika saya memasukkan 8100 dan bukannya 28015 dan mendapat ralat ini:

rethinkdb: Unexpected EOF: HTTP/ 400 Bad Request 2023/05/18 01:38:52 Could not connect exit status 1
Salin selepas log masuk

Mungkin ada yang tahu cara menyelesaikan masalah ini)

Penyelesaian

-p 8100:8080将容器中的端口8080映射到主机上的端口8100。您没有映射任何其他端口,因此,当您尝试访问8100以外的任何端口(例如127.0.0.1:28015) apabila permintaan anda tidak sampai ke bekas. Sesuatu yang lain pada hos mungkin sedang mendengar pada port itu, atau mungkin tiada apa-apa yang mendengar.

Anda menyebut bahawa anda mempunyai akses kepada上的管理界面http://localhost:8100; jika anda menyemak log, anda akan melihat sesuatu seperti:

listening for administrative http connections on port 8080 listening for client driver connections on port 28015
Salin selepas log masuk

Jadi pelayan sedang mendengar sambungan pada berbilang port. port8080(映射到8100)是管理 http 接口,28015用于驱动程序连接(这在文档)。您的代码正在尝试连接到端口28015(yang betul), tetapi anda tidak memetakan port supaya ia tidak boleh diakses pada hos;

docker run --name rth -p 8100:8080 -p 28015:28015 -d rethinkdb
Salin selepas log masuk

Ini akan menukar port dalam bekas kepada

(anda boleh menggunakan port hos yang berbeza jika perlu; cuma ingat untuk mengemas kini kod anda). Kami kini boleh berjaya menyambungkan perkara berikut:28015映射到主机上的端口28015

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") }
Salin selepas log masuk

Atas ialah kandungan terperinci Ralat menyambung ke rethinkDB daripada golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!