Maison > développement back-end > Golang > Comment résoudre l'erreur « Pilote non pris en charge -> Scan pair : []uint8 -> *time.Time » lors de la récupération des données temporelles de MySQL dans Golang ?

Comment résoudre l'erreur « Pilote non pris en charge -> Scan pair : []uint8 -> *time.Time » lors de la récupération des données temporelles de MySQL dans Golang ?

Patricia Arquette
Libérer: 2024-11-13 08:46:02
original
536 Les gens l'ont consulté

How to Resolve Paire de scan : []uint8 -> *time.Time" Erreur lors de la récupération des données temporelles de MySQL dans Golang ? " /> Paire de scan : []uint8 -> *time.Time" Erreur lors de la récupération des données temporelles de MySQL dans Golang ? " />

Comprendre l'erreur d'analyse de l'heure de la base de données dans Golang

Lorsque vous essayez de récupérer des données temporelles d'une base de données MySQL à l'aide de Golang, vous pouvez rencontrer une erreur similaire à la suivante :

unsupported driver -> Scan pair: []uint8 -> *time.Time
Copier après la connexion

Cette erreur survient car le comportement par défaut du pilote Go SQL n'analyse pas automatiquement les champs DATE ou DATETIME de MySQL dans l'heure Go.Time tapez.

Solution 1 : Activer l'analyse automatique

Pour résoudre ce problème, vous pouvez activer l'analyse automatique en ajoutant parseTime=true à la chaîne de connexion de votre base de données.

db, err := sql.Open("mysql", "root:@/?parseTime=true")
Copier après la connexion

Avec ce paramètre, le pilote convertira automatiquement les valeurs DATE et DATETIME en objets time.Time.

Solution 2 : Personnalisée Analyse

Si vous rencontrez des exigences d'analyse spécifiques, vous pouvez opter pour une analyse personnalisée. Pour ce faire :

  • Définissez un type personnalisé qui encapsule []octet et inclut une heure. () pour l'analyse.

    type rawTime []byte
    
    func (t rawTime) Time() (time.Time, error) {
      return time.Parse("15:04:05", string(t))
    }
    Copier après la connexion
  • Utilisez votre type personnalisé dans votre code de numérisation pour analyser manuellement la valeur temporelle.

    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())
    Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal