2016-03-28 113 views
3

我想連接MySql數據庫使用Go語言,並給我下面的錯誤。使用GoLang與mysql連接失敗

sql: unknown driver "mysql" (forgotten import?) 

我的代碼

package main 

    import (
     "database/sql" 
     "fmt" 
    ) 

func main() { 
    db, err := sql.Open("mysql", "astaxie:[email protected]/test?charset=utf8") 
    checkErr(err); 
    err=db.Ping(); 
} 

而且當我輸入

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

我得到的

imported and not used 
+2

什麼是你的代碼看起來,當您添加像'_ 「github.com/go-sql-driver/mysql」'?當你在包名稱前面加下劃線時,它不應該導入和不使用。 – codefreak

回答

6

錯誤再試試吧,但看我的筆記:

package main 

import (
    "database/sql" 

    _ "github.com/go-sql-driver/mysql" 
) 
// NOTE - I removed the import for "fmt" because it was unused. 

func main() { 
    db, err := sql.Open("mysql", "astaxie:[email protected]/test?charset=utf8") 
    checkErr(err); 
    err=db.Ping(); 
    // NOTE - the above line will trigger an error because err is unused. 
} 

我添加了MySQL驅動程序的導入並刪除了「fmt」,因爲它未被使用。這可能是導致「未使用」錯誤的原因。

5

對於其他人來到這個頁面錯誤SQL的結果:未知驅動程序「MySQL的」(?忘了進口),在database/sql包必須在配合使用數據庫驅動程序。這意味着除了導入database/sql包,之外,您還需要導入數據庫驅動程序

例如,對於mysql,您可以使用包go-sql-driver。通常情況下,你使用下劃線_符號導入這個包,意思是進口僅限於其副作用:

import _ "github.com/go-sql-driver/mysql" 

你可以閱讀更多關於這一點,看看下面的SQL驅動程序的列表:

+0

爲什麼我們需要這個驅動程序? – JohannaNoobie

+0

由於'database/sql'沒有爲特定的sql數據庫提供實現,只有一個通用接口 - 驅動程序實現了與特定數據庫接口的邏輯,在這種情況下,mysql(處理與數據庫的連接,執行查詢,準備聲明等) –