Heim > Backend-Entwicklung > Golang > echo: http: panic-service:45724: Laufzeitfehler: ungültige Speicheradresse oder Nullzeiger dereferenziert Goroutine 10:

echo: http: panic-service:45724: Laufzeitfehler: ungültige Speicheradresse oder Nullzeiger dereferenziert Goroutine 10:

WBOY
Freigeben: 2024-02-05 21:51:03
nach vorne
662 Leute haben es durchsucht

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 
}
Nach dem Login kopieren

路由器.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)
}
Nach dem Login kopieren

服务器.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"))
}
Nach dem Login kopieren

正确答案


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

db, err := sql.Open("postgres", dbinfo)
Nach dem Login kopieren

而不是

db, err = sql.Open("postgres", dbinfo)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonecho: http: panic-service:45724: Laufzeitfehler: ungültige Speicheradresse oder Nullzeiger dereferenziert Goroutine 10:. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage