2009-08-28 16 views
9

J'ai une base de données MySQL dans laquelle je stocke un tas d'informations textuelles dans un champ de texte dans la base de données. Les colonnes estMySQL Texte Colonne tronquée

Nom: Informations
Type: text
Collation: utf8_general_ci

J'ai eu un insert utilisateur ~ 64 Ko d'informations sur le terrain et il disjoncte. Il va tronquer les 3 derniers caractères. Ce qui dans ce cas se trouve être la fin d'un onglet afin qu'il vienne tout après sur la page. Si je vais manuellement dans la base de données et supprime quelques lettres et ajoute le dos, la prochaine fois que je vais l'éditer, ces 3 dernières seront supprimées à nouveau. Phpmyadmin indique que le champ doit être long et ne peut pas être éditable. J'ai donc essayé de l'éditer sur ma page cms et j'ai encore reçu le même résultat.

Y a-t-il des problèmes connus avec autant de données dans une seule colonne de texte de base de données dans mysql? Il ne semble pas qu'il devrait y avoir.

Répondre

13

Je pense que la taille maximale d'un champ MySQL TEXT est inférieure à 2^16 octets. En utilisant l'encodage UTF-8, cela peut signifier encore moins de caractères. Vous pouvez utiliser MEDIUMTEXT pour 2^24 ou LONGTEXT pour 2^32 octets à la place, voir MySQL-Docs pour plus de détails.

Ah, et assurez-vous de vérifier votre taille .

+6

Je ne savais pas qu'il y avait différents types de texte dans MySQL. – corymathews

+0

LONGTEXT au lieu de BIGTEXT – SysHex

+1

Merci, SysHex, vous avez bien sûr raison. J'ai corrigé ça. –

0

Il y a ce qu'on appelle documentation, en disant que le stockage nécessaire pour les types de données est:

BLOB, TEXT L + 2 bytes, where L < 2^16 
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 

Notez que 2^16 == 65536

0

Je crois comprendre TEXT a une valeur maximale de 65 000 octets et tout ce qui est plus grand que cela sera tronqué. Cela semblerait expliquer votre situation. Vous dites que votre utilisateur saisit environ 64 Ko, pourrait-il être juste supérieur à 65 Ko, par quelques (trois) octets?

Envisagez d'utiliser un objet BLOB.

5

Vous devez vous rappeler que le texte a un maximum de 65 535 caractères. Si votre contenu dépasse 64K octets, il est possible que vous dépassiez la limite des charaters. Je suggère de changer votre type de colonne à MEDIUMTEXT ou LONGTEXT et voir si cela résout votre problème.

Questions connexes