gpt4 book ai didi

mysql - 在没有 gorm 的情况下使用 mysql db 进行 revel

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:49 26 4
gpt4 key购买 nike

我已将所有内容放入 app.go 中,数据库可以正确打开,但 Index 无法访问全局变量。全局变量似乎不是全局变量,因为如果我在 InitDB 中分配 Db 后删除它的使用,我会收到错误“Db 已声明但未使用”

package controllers

import (
"database/sql"
"fmt"

_ "github.com/go-sql-driver/mysql"
"github.com/revel/revel"
)

var Db *sql.DB

type App struct {
*revel.Controller
}

func (c App) Index() revel.Result {
if c.Params.Get("id") == "3012" {

return c.Redirect("http://youtube.com")
}
fmt.Println("here is the db from index:", Db)
return c.Render()
}

func InitDB() {

// open db
Db, err := sql.Open("mysql", "username:xxxxxxx@tcp(xxxxxxx:3306)/xxxx")
if err != nil {
revel.INFO.Println("DB Error", err)
}
revel.INFO.Println("DB Connected")
//fmt.Println(Db)

}

func init() {
revel.OnAppStart(InitDB)
}

任何帮助将不胜感激!谢谢。

最佳答案

您以错误的方式声明了您的变量。您当前使用的方式类似于为 InitDB 范围声明一个普通变量(您正在使用 := )。

func InitDB() {

var err error
Db, err = sql.Open("mysql", "username:xxxxxxx@tcp(xxxxxxx:3306)/xxxx")
if err != nil {
revel.INFO.Println("DB Error", err)
}
revel.INFO.Println("DB Connected")
//fmt.Println(Db)

}

我还建议在应用程序中创建一个名为 controllers 的文件夹来存储你所有的路由逻辑,如果需要的话调用 app.Db 变量

这应该可行

关于mysql - 在没有 gorm 的情况下使用 mysql db 进行 revel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39431794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com