144 votes

Données tronquées pour une colonne ?

Après avoir changé le type de données d'une colonne MySql afin de stocker Appel Twilio (chaînes de 34 caractères), j'essaie de modifier manuellement les données de cette colonne avec :

update calls 
   set incoming_Cid='CA9321a83241035b4c3d3e7a4f7aa6970d' 
 where id='1';

Cependant, je reçois une erreur qui n'a pas de sens puisque le type de données de la colonne a été correctement modifié ?

| Level ||| Code | Message | Warning | 1265 | Data truncated for column 'incoming_Cid' at row 1

2 votes

Quel est le type de données exact après modification ?

3 votes

Êtes-vous sûr que cette colonne a spécifié suffisamment de place pour un texte de cette longueur ?

1 votes

ALTER TABLES calls MODIFY incoming_Cid STRING; c'est ce que j'ai fait.

1voto

Black Points 3971

J'ai eu le même problème, avec un champ de base de données de type "SET" qui est un type d'énumération.

J'ai essayé d'ajouter une valeur qui n'était pas dans cette liste.

La valeur que j'ai essayé d'ajouter avait la valeur décimale 256, mais la liste d'enum n'avait que 8 valeurs.

1: 1   -> A
2: 2   -> B
3: 4   -> C
4: 8   -> D
5: 16  -> E
6: 32  -> F
7: 64  -> G
8: 128 -> H

Il m'a donc suffi d'ajouter la valeur supplémentaire au champ.

enter image description here

En lisant ceci documentation L'entrée entrée m'a aidé à comprendre le problème.

MySQL stocke les valeurs SET sous forme numérique, avec le bit de poids faible de la valeur SET. valeur stockée correspondant au premier membre de l'ensemble. Si vous récupérez une valeur SET dans un contexte numérique, la valeur récupérée a des bits mis à jour correspondant aux membres de l'ensemble qui composent la valeur de la colonne. Pour Par exemple, vous pouvez extraire des valeurs numériques d'une colonne SET de la manière suivante :

mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a

Si un nombre est stocké dans une colonne SET, les bits qui sont activés dans la colonne représentation binaire du nombre détermine les membres du jeu dans la valeur de la colonne. Pour une colonne spécifiée comme SET('a', 'b', 'c', 'd'), la fonction membres ont les valeurs décimales et binaires suivantes.

SET Member  Decimal Value   Binary Value
    'a'                1          0001
    'b'                2          0010
    'c'                4          0100
    'd'                8          1000

Si vous attribuez une valeur de 9 à cette colonne, c'est-à-dire 1001 en binaire, alors les premier et quatrième membres de la valeur SET, 'a' et 'd', sont sélectionnés et la valeur résultante est "a,d".

1voto

Saidjon Points 31

Quand j'ai essayé pour la première fois d'importer un csv dans mysql, j'ai eu la même erreur, et ensuite j'ai compris que la table mysql que j'ai créée n'a pas la longueur de caractères du champ csv à importer, donc si c'est la première fois que j'importe un csv

  1. C'est une bonne idée de donner plus de longueur de caractères.
  2. étiqueter tous les champs comme varchar o text ne pas mélanger int ou d'autres valeurs.

alors vous êtes prêt à partir.

1voto

BIKRAM BISWAS Points 1

Vérifiez si vous utilisez le type de données 'enum'. Si vous utilisez le type de données 'enum', les éléments à l'intérieur de ce type de données doivent correspondre exactement aux données que vous saisissez. Vous prenez le type de données enum comme ceci : enum('livre', papeterie', 'autres') Ensuite, lorsque vous insérez les données dans la base de données, vous devez faire comme ceci : INSERT INTO nom_de_base.nom_de_table (colonne1,...colonnen) VALUES(). La valeur doit inclure les mêmes éléments que ceux que vous avez mentionnés entre les crochets du type de données enum.

0voto

Mahmoud Magdy Points 113

Mon problème est que j'ai utilisé des guillemets simples au lieu de guillemets doubles, ce qui ajoute des mots supplémentaires dans la colonne booléenne.

0voto

SeaOfCode Points 1

J'ai rencontré le même problème. Dans mon cas, j'ai inséré une chaîne vide pour une colonne numérique, mais en insérant une valeur numérique sous forme de chaîne pour la même colonne, cela a été résolu, par exemple '12.56' --> colonne numérique fonctionnera, mais '' --> colonne numérique donnera l'erreur mentionnée ci-dessus. Note : Pour les colonnes numériques dans MySql, nous pouvons également passer les valeurs entre guillemets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X