2013-05-26 51 views
2

我很新的使用去,並有問題連接到外部的mysql數據庫。 我正在使用go-sql-driver,它接縫很好。歡迎向其他司機提出建議!轉到 - 連接到外部的mysql數據庫

這是整個程序:

import (
    "database/sql" 
    _ "github.com/go-sql-driver/mysql" 
    "fmt" 
) 

const (
    DB_HOST = "tcp(http://thedburl.com)" 
    DB_NAME = "nameofdatabase" 
    DB_USER = "username" 
    DB_PW = "password" 
) 

func main() { 
    dsn := DB_USER + ":" + DB_PW + "@" + DB_HOST + "/" + DB_NAME + "?charset=uf8" 
    db, err := sql.Open("mysql", dsn) 

    if err != nil { 
     fmt.Println("shiiet didn't work yo! Initialization failed") 
    } 

    defer db.Close() // go's purty cool 

    var str string 
    q := "SELECT * FROM forums" 
    err = db.QueryRow(q).Scan(&str) 

    if err != nil { 
     fmt.Println(err) 
    } 

    fmt.Println(str) 
} 

在請求我recieving以下錯誤

"GetAddrInfoW: The specified class was not found." 

任何想法?我在網上找了幾個小時,似乎無法解決問題。 可能值得注意的是,我在java中多次使用了相同的數據庫服務。

+0

您是如何安裝驅動程序的?使用'go get'?你在使用Go1.1嗎? –

+0

Yeap,通過提示與去得到,我用Go 1.1 :)這對我來說是一個瘋狂的謎。 –

+0

我要走這是一個驅動程序問題..我似乎無法找到問題壽。當我打電話給「go get github.com/go-sql-driver/mysql」時,我得到一個加載時間,但沒有迴應。 Go list也是buggin,給了我一個奇怪的結果。 –

回答

0

感謝大家的回答。

Go的mysql驅動程序在當前時間很難處理較舊的mysql版本。具體來說,這個問題是由於2006年mysql的old_password不兼容造成的。因此,使用舊數據庫是一件痛苦的事情。 (來源:https://github.com/go-sql-driver/mysql/wiki/old_passwords) - 我受過教育的猜測也適用於拋出「錯誤連接」錯誤的mymysql驅動程序。在重複嘗試連接後基本超時。

特別感謝@Lepidosteus的回答讓我發現了真正的問題。