Git noob'dur ve Go'da mysql bağlantısı açma ve daha sonra http işleyicileri arasında paylaşmanın tam örneklerini bulamıyorum. İşte kodum şu ana kadar HomeHandler'ımda main() 'da açtığım db bağlantısını nasıl kullanırdım?http goroutines arasında mysql bağlantısı nasıl paylaşılır?
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
fmt.Println("starting up")
db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
if err != nil {
log.Fatalf("Error opening database: %v", err)
}
db.SetMaxIdleConns(100)
r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "home")
}
Merhaba Julien sayesinde cevaplanması için:
sadece db-kolu paylaşmak ve HTTP işleyicileri kullanmak gerektiğini, kodunuzda bunun anlamı uygulanır. Go-MySQL Sürücüsünün yazarından daha iyi bir kaynak beklemiyordum! Bir derleme hatası alıyorum kodda bir yazım hatası olabilir gibi görünüyor: './main.go:18: db (sql.DB yazın) birden çok atama 'sql.DB atayamazsınız' – JasonÜzgünüz, şimdi yaz. Bu çalışmayan @ fmt.Println.MKO hala doğru değil. Veritabanı/sql, tam olarak bu gibi kullanım durumları için tasarlanmıştır. –
FYI, HTTP işleyicilerinde bir DB'ye nasıl erişileceğine dair birkaç basit örnek: https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/go/src/hello/hello.go –