2016-03-28 5 views
3

Ich versuche, die MySql DB mit Go-Sprache zu verbinden und gibt mir folgenden Fehler.Verbindung schlägt mit mysql mit GoLang

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

My-Code

package main 

    import (
     "database/sql" 
     "fmt" 
    ) 

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

Auch wenn ich

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

importieren Ich erhalte Fehler von

imported and not used 
+2

was macht Ihr Code aussehen, wenn Sie hinzufügen '_ "github.com/go-sql-driver/mysql"'? Es sollte nicht importiert und nicht verwendet werden, wenn Sie den Unterstrich vor dem Paketnamen einfügen. – codefreak

Antwort

6

es wieder versuchen, aber für meine Notizen aussehen:

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. 
} 

Ich habe den Import für den MySQL-Treiber hinzugefügt und "fmt" entfernt, weil es nicht verwendet wurde. Dies kann die Ursache für den Fehler "importiert und nicht verwendet" sein.

5

andere Für diese Seite als Ergebnis der SQL-Fehler kommen: unbekannt Treiber „mysql“ (vergessen? Import), das database/sql Paket muss mit einem Datenbanktreiber in Verbindung verwendet werden. Das bedeutet, dass Sie zusätzlich zum Import des database/sql-Pakets einen Datenbanktreiber importieren müssen.

Zum Beispiel könnten Sie für mysql das Paket go-sql-driver verwenden. Typischerweise importieren Sie dieses Paket das Unterstreichungs _ Notation, wird importiert für seine Nebenwirkungen nur Sinn:

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

Sie können mehr über diese lesen und eine Liste von SQL-Treiber unter finden:

+0

Warum brauchen wir diesen Treiber? – JohannaNoobie

+0

Da 'database/sql' keine Implementierung für bestimmte SQL-Datenbanken bietet, nur eine generische Schnittstelle, implementiert der Treiber die Logik, die mit der spezifischen Datenbank verbunden ist, in diesem Fall mysql (Verbindungen zur Datenbank handhaben, Abfragen ausführen, vorbereiten Aussagen usw.) –

Verwandte Themen