Heim > Backend-Entwicklung > Golang > Wie behebe ich den Fehler „nicht unterstützter Treiber -> Scan-Paar: []uint8 -> *time.Time' beim Abrufen von Zeitdaten von MySQL in Golang?

Wie behebe ich den Fehler „nicht unterstützter Treiber -> Scan-Paar: []uint8 -> *time.Time' beim Abrufen von Zeitdaten von MySQL in Golang?

Patricia Arquette
Freigeben: 2024-11-13 08:46:02
Original
534 Leute haben es durchsucht

How to Resolve 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? " />

Verstehen des Parse-Zeitfehlers aus der Datenbank 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
Nach dem Login kopieren

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.

Lösung 1: Automatisches Parsen aktivieren

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")
Nach dem Login kopieren

Mit dieser Einstellung konvertiert der Treiber automatisch DATE- und DATETIME-Werte in time.Time-Objekte.

Lösung 2: Benutzerdefiniert Analyse

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))
    }
    Nach dem Login kopieren
  • 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())
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage