2016-09-11 28 views
0

我已經將所有內容放入app.go中,數據庫可以正常打開,但Index無法訪問全局變量。全局變量似乎並沒有成爲全球性,因爲如果我告訴initdb裏面給它分配後取出使用DB的我得到的錯誤「Db的聲明,不使用」使用mysql數據庫而不使用gorm

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:[email protected](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) 
} 

任何幫助,將不勝感激!謝謝。

+0

是否有可能直接在指數使用沒有教條? – vinniyo

回答

1

您正在以錯誤的方式聲明您的變量。你正在使用它的當前方式,像爲InitDB範圍聲明一個正常變量(你正在使用:=)。

func InitDB() { 

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

} 

我也建議創建的應用程序稱爲控制器內部的文件夾來存儲您的所有路線的邏輯,如果需要調用app.Db變量

這應該工作

+0

呃..總是那麼容易,需要我永遠搞清楚。謝謝! – vinniyo

相關問題