第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

嘗試使用 go kit 測(cè)試微服務(wù)中的功能時(shí)可能在數(shù)據(jù)庫(kù)中出錯(cuò)

嘗試使用 go kit 測(cè)試微服務(wù)中的功能時(shí)可能在數(shù)據(jù)庫(kù)中出錯(cuò)

Go
湖上湖 2022-05-18 15:51:47
我是圍棋中微服務(wù)的新學(xué)習(xí)者。我嘗試編寫自己的微服務(wù)。功能很簡(jiǎn)單。localhost:81/balance/{phone_number}應(yīng)該返回用戶余額的請(qǐng)求是數(shù)據(jù)庫(kù)。每當(dāng)我發(fā)送此請(qǐng)求時(shí),我都會(huì)看到錯(cuò)誤:    net/http.(*conn).serve.func1(0xc00021a000)        /usr/local/go/src/net/http/server.go:1767 +0x139panic(0x8fe8e0, 0xccafc0)        /usr/local/go/src/runtime/panic.go:679 +0x1b2github.com/jinzhu/gorm.(*DB).clone(0x0, 0x30)        /home/bita/go/src/github.com/jinzhu/gorm/main.go:848 +0x26github.com/jinzhu/gorm.(*DB).Where(0x0, 0x8d6720, 0xa04b40, 0xc0001fe060, 0x1, 0x1, 0xc00019e5d0)        /home/bita/go/src/github.com/jinzhu/gorm/main.go:235 +0x2farvan/wallet/Reository.(*repository).GetBalance(0xc000184c40, 0xa180c0, 0xc0001fa2d0, 0xc00022000d, 0x7, 0xa0f020, 0xc0001fa300, 0x0)        /home/bita/go/src/arvan/wallet/Reository/repo.go:35 +0xebarvan/wallet/pkg/service.service.GetBalance(0xa12f80, 0xc000184c40, 0xa0f020, 0xc00019e5d0, 0xa180c0, 0xc0001fa2d0, 0xc00022000d, 0x7, 0xc0001fa270, 0xc0001d0730, ...)        /home/bita/go/src/arvan/wallet/pkg/service/service.go:31 +0x116arvan/wallet/pkg/http.makeGetBalanceEndpoint.func1(0xa180c0, 0xc0001fa2d0, 0x90d160, 0xc0001fe040, 0xc0001fe040, 0x0, 0x0, 0x0)        /home/bita/go/src/arvan/wallet/pkg/http/endpoint.go:25 +0x72github.com/go-kit/kit/transport/http.Server.ServeHTTP(0xc000184c80, 0x994260, 0x994270, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9946a8, ...)        /home/bita/go/src/github.com/go-kit/kit/transport/http/server.go:121 +0x1b2arvan/wallet/pkg/http.commonMiddleware.func1(0xa17240, 0xc00022e000, 0xc000212300)        /home/bita/go/src/arvan/wallet/pkg/http/server.go:33 +0x100net/http.HandlerFunc.ServeHTTP(0xc000200020, 0xa17240, 0xc00022e000, 0xc000212300)        /usr/local/go/src/net/http/server.go:2007 +0x44github.com/gorilla/mux.(*Router).ServeHTTP(0xc0000d8540, 0xa17240, 0xc00022e000, 0xc000212100)我不知道為什么會(huì)這樣。因?yàn)楫?dāng)我嘗試使用單體架構(gòu)時(shí),它一切正常。整個(gè)代碼的鏈接在這里它與上下文有關(guān)嗎????現(xiàn)在不知道!附言。我所有的代碼都受到gokit-tutorial和他在 youtube 上的教程視頻的啟發(fā)。
查看完整描述

1 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

您省略的實(shí)際錯(cuò)誤消息就在恐慌堆棧跟蹤之前:


http: panic serving [::1]:53017: runtime error: invalid memory address or nil pointer dereference

這是一些指針尚未設(shè)置且等于 的提示nil。


當(dāng)深入挖掘時(shí),我發(fā)現(xiàn)當(dāng)請(qǐng)求到達(dá)您的方法時(shí),它repo.db沒有設(shè)置( ) ,這就是它恐慌的原因。== nilGetBalancerepo.db.Where


您嘗試在main.go文件中設(shè)置此字段,您還可以在其中加載數(shù)據(jù)庫(kù):


var db *gorm.DB

{

    dbDriver := "sqlite3"

    dbName := "demo.db"


    db, err := gorm.Open(dbDriver, dbName)

    if err != nil {

        _ = level.Error(logger).Log("exit", err)

        os.Exit(-1)

    }


    db.AutoMigrate(&Entity.UserEntity{})

}

這段代碼包含一個(gè)微妙的錯(cuò)誤,它與變量陰影有關(guān)?;旧?,您db上面聲明的變量與括號(hào)中聲明的變量不同,{}括號(hào)中的變量是一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)。您可以通過重命名或不再聲明它來解決這個(gè)問題(使用:=):


var db *gorm.DB

{

    dbDriver := "sqlite3"

    dbName := "demo.db"


    dbLoaded, err := gorm.Open(dbDriver, dbName) // Rename the variable

    if err != nil {

        _ = level.Error(logger).Log("exit", err)

        os.Exit(-1)

    }


    dbLoaded.AutoMigrate(&Entity.UserEntity{})


    db = dbLoaded // Set `db` of the outer scope to `dbLoaded` of this scope

} // dbLoaded is lost here, but it can be accessed using `db`

現(xiàn)在它正確加載了數(shù)據(jù)庫(kù)(db不再是nil),并且您的其他模塊中的訪問現(xiàn)在也可以正常工作。


查看完整回答
反對(duì) 回復(fù) 2022-05-18
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)