実現したいこと
Goを使用してMySQLに接続したい
発生している問題・エラーメッセージ
2022/08/16 14:56:07 [Recovery] 2022/08/16 - 14:56:07 panic recovered: GET / HTTP/1.1 Host: 127.0.0.1:8887 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8 Cache-Control: no-cache Connection: keep-alive Pragma: no-cache Sec-Ch-Ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "macOS" Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 runtime error: invalid memory address or nil pointer dereference /usr/local/Cellar/go/1.19/libexec/src/runtime/panic.go:260 (0x104b595) panicmem: panic(memoryError) /usr/local/Cellar/go/1.19/libexec/src/runtime/signal_unix.go:835 (0x104b565) sigpanic: panicmem() /usr/local/Cellar/go/1.19/libexec/src/database/sql/sql.go:883 (0x13141b8) (*DB).Close: db.mu.Lock() /Users/kurokihiroki/go-connection-database/go_sample/main.go:34 (0x1322614) main.func1: }) /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0x130d661) (*Context).Next: c.handlers[c.index](c) /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/recovery.go:99 (0x130d64c) CustomRecoveryWithWriter.func1: c.Next() /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0x130c7a6) (*Context).Next: c.handlers[c.index](c) /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/logger.go:241 (0x130c789) LoggerWithConfig.func1: c.Next() /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0x130b85d) (*Context).Next: c.handlers[c.index](c) /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/gin.go:489 (0x130b4e5) (*Engine).handleHTTPRequest: c.Next() /Users/kurokihiroki/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/gin.go:445 (0x130b1a4) (*Engine).ServeHTTP: engine.handleHTTPRequest(c) /usr/local/Cellar/go/1.19/libexec/src/net/http/server.go:2947 (0x121c78b) serverHandler.ServeHTTP: handler.ServeHTTP(rw, req) /usr/local/Cellar/go/1.19/libexec/src/net/http/server.go:1991 (0x1219086) (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req) /usr/local/Cellar/go/1.19/libexec/src/runtime/asm_amd64.s:1594 (0x10664a0) goexit: BYTE $0x90 // NOP
該当のソースコード
go
1package main 2 3import ( 4 "log" 5 "github.com/gin-gonic/gin" 6 "database/sql" 7 8 _ "github.com/go-sql-driver/mysql" 9) 10 11var db *sql.DB 12 13func main() { 14 // ルーターを準備 15 router := gin.Default() 16 17 // URLとハンドラ-の設定 18 router.GET("/", func (cxt *gin.Context) { 19 // cxt.String(200, "Hello World!!") 20 21 var err error 22 23 dbInfo := "root:root@localhost:8889/tcp(DB名)?charset=utf8mb4" 24 25 // DB接続 26 db, err = sql.Open("mysql", dbInfo) 27 28 // 接続が終了したらクローズする 29 defer db.Close() 30 31 if err != nil { 32 cxt.String(200, "接続できてる") 33 } 34 }) 35 36 // サーバー起動 37 err := router.Run("127.0.0.1:8887") 38 39 if err != nil { 40 log.Fatal("サーバー起動に失敗", err) 41 } 42}
試したこと
シャドーイングによる変数の初期化等が影響しているかと思い、変数を定義してみましたが、変わらず。
補足情報(FW/ツールのバージョンなど)
Go:1.19
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。