110 votes

"Données trop longues pour la colonne" - pourquoi?

J'ai écrit un script MySQL pour créer une base de données pour des dossiers hospitaliers hypothétiques et la remplir avec des données. Une des tables, Département, a une colonne nommée Description, qui est déclarée comme étant de type varchar(200). Lors de l'exécution de la commande INSERT pour Description, j'obtiens une erreur :

erreur 1406 : Donnée trop longue pour la colonne 'Description' à la ligne 1.

Toutes les chaînes que j'insère font moins de 150 caractères.

Voici la déclaration :

CREATE TABLE Department(
    ...
    Description varchar(200)
    ...);

Et voici la commande d'insertion :

INSERT INTO Department VALUES
(..., 'Il y a du texte ici',...), (..., 'Il y a encore plus de texte ici',...);

Apparemment, tout devrait fonctionner. Quelqu'un a-t-il un aperçu ?

124voto

Changer le type de colonne en LONGTEXT

62voto

J'ai eu un problème similaire lors de la migration d'une ancienne base de données vers une nouvelle version.

Passez le mode MySQL à ne pas utiliser STRICT.

SET @@global.sql_mode= 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

Code d'erreur : 1406. Données trop longues pour la colonne - MySQL

20voto

STT LCU Points 3112

Il existe une limite stricte sur la quantité de données pouvant être stockées dans une seule ligne d'une table mysql, quelle que soit le nombre de colonnes ou la longueur individuelle des colonnes.

Comme indiqué dans la DOCUMENTATION OFFICIELLE

La taille maximale d'une ligne contraint le nombre (et éventuellement la taille) des colonnes car la longueur totale de toutes les colonnes ne peut pas dépasser cette taille. Par exemple, les caractères utf8 nécessitent jusqu'à trois octets par caractère, donc pour une colonne CHAR(255) CHARACTER SET utf8, le serveur doit allouer 255 × 3 = 765 octets par valeur. Par conséquent, une table ne peut pas contenir plus de 65 535 / 765 = 85 colonnes de ce type.

Le stockage des colonnes de longueur variable comprend des octets de longueur, qui sont pris en compte dans la taille de la ligne. Par exemple, une colonne VARCHAR(255) CHARACTER SET utf8 nécessite deux octets pour stocker la longueur de la valeur, donc chaque valeur peut atteindre jusqu'à 767 octets.

Ici vous trouverez LES LIMITATIONS DES TABLES INNODB

11voto

Dans mysql si vous prenez VARCHAR alors changez-le en TEXT car sa taille est de 65 535 et si vous pouvez déjà prendre TEXT alors changez-le en LONGTEXT seulement si vous avez besoin de plus de 65 535.

la taille totale de LONGTEXT est de 4 294 967 295 caractères

9voto

Jayesh Amin Points 233

Varchar a ses propres limites. Essayez peut-être de changer le type de données en texte.!

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