2016-03-05 86 views
0

我需要使用Go連接到遠程MySql服務器。我正在使用以下代碼通過gorm連接到MySql。無法連接到Go中的遠程MySql

type DBController struct { 
    DB gorm.DB 
} 

func (dc *DBController) InitDB() { 
    var err error 

    host := v.GetString("db.mysql.host") 
    port := v.GetString("db.mysql.port") 

    user := v.GetString("db.mysql.user") 
    pass := v.GetString("db.mysql.pass") 

    db := v.GetString("db.mysql.db") 

    //user:[email protected](localhost:5555)/dbname 
    conn := fmt.Sprintf("%s:%[email protected](%s:%s)/%s", user, pass, host, port, db) 
    //conn := v.GetString($user+":"$pass+"@tcp("+$host+":"+$port+")/"+$db) 
    log.Debug(conn) 

    dc.DB, err = gorm.Open("mysql", conn) 
    if err != nil { 
     log.Fatalf("Error when connect database, the error is '%v'", err) 
    } 
    dc.DB.LogMode(true) 
} 

func (dc *DBController) GetDB() gorm.DB { 
    return dc.DB 
} 

當我跑我得到以下錯誤

No configuration file loaded - using defaults 
:@tcp(:)/ 
Error when connect database, the error is 'dial tcp: unknown port tcp/' 
exit status 1 

如何解決這個錯誤轉到服務器?

+2

你使用5555作爲你的MySQL端口嗎?我只是爲了以防萬一,因爲默認的是3306. – Tico

+0

是log.Debug(conn)打印連接字符串:@tcp(:)/? – Mark

回答

0

我猜「v」是你的配置變量......它不包含數據,這與Gorm沒有問題,這是因爲dc.Open()沒有收到配置值。

如果您嘗試使用靜態數據運行它,它應該可以工作。