Rumah > pembangunan bahagian belakang > Golang > echo: http: panic-service: 45724: ralat masa jalan: alamat memori tidak sah atau penunjuk nil dinyahrujuk goroutine 10:

echo: http: panic-service: 45724: ralat masa jalan: alamat memori tidak sah atau penunjuk nil dinyahrujuk goroutine 10:

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-05 21:51:03
ke hadapan
713 orang telah melayarinya

echo: http: 恐慌服务:45724: 运行时错误: 无效的内存地址或 nil 指针取消引用 goroutine 10 :

问题内容

我尝试使用 go/echo 和 postgres 使用原始 sql 创建一个 REST API,但我无法使其工作,不知道问题是什么

控制台打印标题中的文本

食谱.go

func CreateRecipe(recipe *Recipe) error {     
    query := `INSERT INTO recipes(title, ingredients, description) VALUES($1, $2, $3);`
    _, err := db.Exec(query, recipe.Title, recipe.Ingredients, recipe.Description)
    if err != nil {         
        return err     
    }      
    return nil 
}
Salin selepas log masuk

路由器.go

func PostRecipe(c echo.Context) error {
    recipe := new(models.Recipe) 

    if err := c.Bind(recipe); err != nil {
        return err
    }

    err := models.CreateRecipe(recipe)

    if err != nil {
        return err
    }
    
    return c.JSON(http.StatusCreated, recipe)
}
Salin selepas log masuk

服务器.go

func Start() {
    //Setting up echo 
    e := echo.New()

    e.Use(middleware.CORS())
    
    e.GET("/api/recipes", Home)

    e.POST("/api/recipes", PostRecipe)

    e.Logger.Fatal(e.Start(":4000"))
}
Salin selepas log masuk

正确答案


我以错误的方式初始化数据库,我使用了

db, err := sql.Open("postgres", dbinfo)
Salin selepas log masuk

而不是

db, err = sql.Open("postgres", dbinfo)
Salin selepas log masuk

Atas ialah kandungan terperinci echo: http: panic-service: 45724: ralat masa jalan: alamat memori tidak sah atau penunjuk nil dinyahrujuk goroutine 10:. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan