【问题标题】:using mysql db for revel without gorm在没有 gorm 的情况下使用 mysql db 进行狂欢
【发布时间】:2016-09-11 08:35:30
【问题描述】:

我已将所有内容放入 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)
}

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

【问题讨论】:

  • 是否可以直接在 index wothout gorm 中使用?

标签: mysql go revel


【解决方案1】:

您以错误的方式声明变量。您当前使用的方式类似于为 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 变量

这应该可以工作

【讨论】:

  • 呃..总是那么容易,让我永远弄清楚。谢谢!
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
相关资源
最近更新 更多