Maison > Article > développement back-end > 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 ?
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 ? " />
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
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.
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")
Avec ce paramètre, le pilote convertira automatiquement les valeurs DATE et DATETIME en objets time.Time.
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)) }
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())
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!