Maison > développement back-end > Golang > Comment résoudre l'erreur « Pilote non pris en charge -> Paire d'analyse : []uint8 -> *time.Time » lors de l'analyse du temps de MySQL dans Go ?

Comment résoudre l'erreur « Pilote non pris en charge -> Paire d'analyse : []uint8 -> *time.Time » lors de l'analyse du temps de MySQL dans Go ?

Barbara Streisand
Libérer: 2024-11-10 14:52:02
original
415 Les gens l'ont consulté

How to Solve Paire de scan : []uint8 -> *time.Time" Erreur lors de l'analyse du temps depuis MySQL dans Go ? " /> Paire d'analyse : []uint8 -> *time.Time" Erreur lors de l'analyse du temps depuis MySQL dans Go ? " />

Comment gérer l'analyse temporelle d'une base de données dans Go

Rencontrer des erreurs lors de la récupération des valeurs temporelles d'une base de données MySQL peut être frustrant. Cet article traite de l'erreur spécifique "pilote non pris en charge -> Paire de numérisation : []uint8 -> *time.Time" et fournit des solutions utilisant la bibliothèque populaire go-sql-driver/mysql.

Solution : activer l'analyse automatique

Le go-sql-driver/mysql offre une prise en charge de l'analyse automatique. des colonnes DATE et DATETIME en valeurs time.Time. Pour activer cette fonctionnalité, ajoutez le paramètre "parseTime=true" à votre chaîne de connexion. Une fois activée, les requêtes telles que SELECT current_timestamp() seront automatiquement mappées au format d'heure souhaité.

Analyse personnalisée pour des cas spécifiques

Pour les cas où l'analyse automatique n'est pas adaptée ou indisponible (par exemple, récupération de current_time()), une analyse personnalisée est requise.

Étape 1 : Créer un type personnalisé

Définissez un type personnalisé qui encapsule des tranches d'octets bruts ([]byte) et implémente une méthode Time() pour analyser les valeurs de temps en time.Time. Par exemple :

type rawTime []byte

func (t rawTime) Time() (time.Time, error) {
    return time.Parse("15:04:05", string(t))
}
Copier après la connexion

Étape 2 : Utilisez le type personnalisé dans la numérisation

Dans votre code de numérisation, remplacez la référence directe à time.Time par votre type personnalisé :

var myTime rawTime
rows, err = db.Query("SELECT current_time()")
if err = rows.Scan(&myTime); err != nil {
    // Handle error
}
Copier après la connexion

Étape 3 : Convertir le temps brut en temps analysé

Enfin, appelez Time() sur votre type personnalisé pour récupérer la valeur du temps analysé :

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