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 ? " />
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.
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é.
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)) }
É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 }
É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())
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!