Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens l'erreur MySQL 1292 : valeur DOUBLE incorrecte tronquée même sans utiliser de doubles ?
Code d'erreur 1292 : valeur DOUBLE incorrecte tronquée dans MySQL
Rencontrer le code d'erreur 1292 peut être frustrant, en particulier lorsque vous insistez sur le fait que vous ne l'avez pas fait. Je n’ai pas utilisé de valeurs doubles. Examinons le problème et explorons une solution potentielle.
Dans la requête fournie, vous essayez de remplir une table avec les valeurs d'une autre table à l'aide d'une instruction INSERT...SELECT. Un détail crucial est de s'assurer que les types de données et leurs tailles dans les deux tables correspondent.
Plus précisément, dans le message d'erreur, vous verrez qu'une valeur DOUBLE incorrecte est impliquée. Cependant, vous avez mentionné que vous n'avez pas de champs doubles dans vos tables. Voici le coupable potentiel :
ta.phone_number
Ce champ n'est probablement pas un double mais plutôt un VARCHAR ou un CHAR dans les deux tables. Lorsque vous effectuez des calculs ou des comparaisons impliquant des valeurs numériques dans des chaînes, comme dans la clause WHERE pour la correspondance de longueur, MySQL peut tenter de convertir la chaîne en valeur numérique, ce qui entraîne une valeur DOUBLE incorrecte et tronquée.
Pour résoudre ce problème, vous avez deux options :
CAST(REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS UNSIGNED) = 10
En convertissant le phone_number en un type numérique NON SIGNÉ, MySQL peut effectuer correctement des comparaisons numériques sans la convertir en valeur DOUBLE.
En abordant ces données différence de type, vous pouvez éviter l'erreur de valeur DOUBLE incorrecte tronquée et assurer un transfert de données réussi.
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!