Scan-Paar: []uint8 -> *time.Time“ Fehler beim Abrufen von Zeitdaten von MySQL in Golang? „ /> Scan-Paar: []uint8 -> *time.Time“ Fehler beim Abrufen von Zeitdaten von MySQL in Golang? " />
Beim Versuch, Zeitdaten aus einer MySQL-Datenbank mit Golang abzurufen, kann ein Fehler ähnlich dem folgenden auftreten:
unsupported driver -> Scan pair: []uint8 -> *time.Time
Dieser Fehler tritt auf, weil das Standardverhalten des Go SQL-Treibers DATE- oder DATETIME-Felder aus MySQL nicht automatisch in die Go-time.Time analysiert Typ.
Um dieses Problem zu beheben, können Sie das automatische Parsen aktivieren, indem Sie parseTime=true zu Ihrer Datenbankverbindungszeichenfolge hinzufügen.
db, err := sql.Open("mysql", "root:@/?parseTime=true")
Mit dieser Einstellung konvertiert der Treiber automatisch DATE- und DATETIME-Werte in time.Time-Objekte.
Wenn Sie auf bestimmte Analyseanforderungen stoßen, können Sie sich für eine benutzerdefinierte Analyse entscheiden:
Definieren Sie einen benutzerdefinierten Typ, der []Byte umschließt und eine Zeit einschließt ()-Methode zum Parsen.
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) }
Verwenden Sie Ihren benutzerdefinierten Typ in Ihrem Scancode, um ihn manuell zu scannen Analysieren Sie den Zeitwert.
var myTime rawTime rows, err := db.Query("SELECT current_time()") if rows.Next() { if err = rows.Scan(&myTime); err != nil { panic(err) } } fmt.Println(myTime.Time())
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „nicht unterstützter Treiber -> Scan-Paar: []uint8 -> *time.Time' beim Abrufen von Zeitdaten von MySQL in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!