Longueur maximale pour le texte de type MySQL

je crée un formulaire pour envoyer des messages privés et je veux définir la valeur maxlength d'un textarea approprié à la longueur maximale d'un champ text dans ma table de base de données MySQL. Combien de caractères un champ de texte de type peut-il contenir?

si beaucoup, pourrais-je spécifier la longueur dans le champ de type de texte de la base de données comme je le ferais avec varchar?

339
demandé sur Peter Mortensen 2011-07-20 22:37:45

8 réponses

voir pour les nombres maximums: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

TINYBLOB, TINYTEXT       L + 1 bytes, where L < 2^8    (255 Bytes)
BLOB, TEXT               L + 2 bytes, where L < 2^16   (64 Kibibytes)
MEDIUMBLOB, MEDIUMTEXT   L + 3 bytes, where L < 2^24   (16 Mebibytes)
LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gibibytes)

L est le nombre d'octets dans votre champ de texte. Donc le nombre maximum de caractères pour le texte est 2 16 -1 (en utilisant des caractères d'un seul octet). Signifie 65 535 caractères (en caractères d'un seul octet).

UTF-8 / MultiByte encoding : utiliser MultiByte encoding chaque caractère peut consommer plus d'un octet d'espace. Pour L'UTF-8, la consommation d'espace se situe entre 1 et 4 octets par caractère.

607
répondu fyr 2017-01-22 19:13:54

TINYTEXT: 256 octets

Texte: 65,535 octets

Medium text: 16,777,215 octets

LONGTEXT: 4,294,967,295 octets

103
répondu Cristian Oana 2016-07-21 13:45:31
Type       | Approx. Length     | Exact Max. Length Allowed
-----------------------------------------------------------
TINYTEXT   | 256 Bytes          | 255 characters
TEXT       | 64  Kilobytes      | 65,535 characters
MEDIUMTEXT | 16  Megabytes      | 16,777,215 characters
LONGTEXT   | 4   Gigabytes      | 4,294,967,295 characters

Note: Si vous utilisez des caractères multi-octets, la colonne "Exact Max. Longueur permise" aura une longueur différente. Par exemple: si vous utilisez des caractères de 2 octets, la longueur maximale exacte pour TINYTEXT serait de 127 caractères. En gros, c'est le nombre d'octets autorisés -1.

43
répondu evilReiko 2017-03-02 12:38:27

selon http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html , la limite est L + 2 bytes, where L < 2^16 , ou 64k.

vous ne devriez pas avoir à vous préoccuper de le limiter, il est automatiquement décomposé en morceaux qui sont ajoutés au fur et à mesure que la corde grandit, donc il ne sera pas toujours utiliser aveuglément 64k.

17
répondu Blindy 2011-07-20 18:43:08

combien de caractères un champ de texte de type peut-il contenir?

selon Documentation vous pouvez utiliser un maximum de 21,844 caractères si le jeu de caractères est UTF8

si beaucoup, est-ce que je pourrais spécifier la longueur dans le champ de type de texte db comme je le ferais avec varchar?

Vous n'avez pas besoin de spécifier la longueur. Si vous avez besoin de plus de caractères utiliser les types de données MÉDIUMTEXT ou LONGTEXT. Avec VARCHAR, la longueur de spécifieng n'est pas pour l'exigence de stockage, il est seulement pour la façon dont les données sont extraites de la base de données.

7
répondu SCC 2014-02-27 07:11:29
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

TINYTEXT est un type de données chaîne qui peut stocker jusqu'à 255 caractères.

TEXT est un type de données chaîne qui peut stocker jusqu'à 65,535 caractères. TEXT est couramment utilisé pour les articles brefs.

LONGTEXT est un type de données chaîne avec une longueur maximale de 4,294,967,295 caractères. Utiliser LONGTEXT si vous avez besoin de stocker d'importantes du texte, comme un chapitre d'un roman.

5
répondu Sachith 2017-06-11 19:39:37

TEXT est un type de données chaîne qui peut stocker jusqu'à 65.535 caractères. Mais encore si vous voulez stocker plus de données puis changer son type de données à LONGTEXT

ALTER TABLE name_tabel CHANGE text_field LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

0
répondu sohel shaikh 2017-12-27 16:17:00

pour la version MySql 8.0.

Exigences De Stockage De Type Numérique

Data Type       Storage Required
TINYINT         1 byte
SMALLINT        2 bytes
MEDIUMINT       3 bytes
INT, INTEGER    4 bytes
BIGINT          8 bytes
FLOAT(p)        4 bytes if 0 <= p <= 24, 8 bytes if 25 <= p <= 53
FLOAT           4 bytes
DOUBLE, REAL    8 bytes
DECIMAL(M,D), NUMERIC(M,D)  Varies; see following discussion
BIT(M)  approximately (M+7)/8 bytes
Les valeurs

pour les colonnes décimales (et numériques) sont représentées en utilisant un format binaire qui regroupe neuf décimales (base 10) en quatre octets. Le stockage pour le nombre entier et les parties fractionnaires de chaque valeur sont déterminés séparément. Chaque multiple de neuf chiffres nécessite quatre octets, et les chiffres "restants" nécessitent une fraction de quatre octets. Stockage obligatoire pour les chiffres excédentaires est donné par le tableau suivant.

date et heure Type exigences relatives à l'entreposage Pour les colonnes TIME, DATETIME et TIMESTAMP, le stockage requis pour les tables créées avant MySQL 5.6.4 diffère des tables créées à partir de 5.6.4 on. Ceci est dû à un changement dans 5.6.4 qui permet à ces types d'avoir une partie fractionnaire, qui nécessite de 0 à 3 octets.

Data Type   Storage Required Before MySQL 5.6.4   Storage Required as of MySQL 5.6.4
YEAR        1 byte                                1 byte
DATE        3 bytes                               3 bytes
TIME        3 bytes                               3 bytes + fractional seconds storage
DATETIME    8 bytes                               5 bytes + fractional seconds storage
TIMESTAMP   4 bytes                               4 bytes + fractional seconds storage

à partir de MySQL 5.6.4, le stockage pour L'année et la DATE reste inchangé. Cependant, le temps, le DATETIME et le TIMESTAMP sont représentés différemment. DATETIME est emballé plus efficacement, nécessitant 5 plutôt que 8 bytes pour la partie non fractionnaire, et les trois parties ont une partie fractionnaire qui nécessite de 0 à 3 bytes, selon la précision fractionnaire de secondes des valeurs stockées.

Fractional Seconds Precision    Storage Required
0                               0 bytes
1, 2                            1 byte
3, 4                            2 bytes
5, 6                            3 bytes

Par exemple, le TEMPS(0), le TEMPS(2), le TEMPS(4) et(6) 3, 4, 5, et 6 octets, respectivement. Temps et temps(0) sont équivalents et nécessitent le même stockage.

pour plus de détails sur la représentation interne des valeurs temporelles, voir MySQL internes: algorithmes et Structures importantes.

Exigences De Stockage Du Type

Dans le tableau suivant, M représente la longueur de colonne déclarée en caractères pour les types de chaînes non ordinaires et les octets pour les types de chaînes binaires. L représente la longueur réelle en octets d'une chaîne de valeur.

Data Type                    Storage Required
CHAR(M)                      The compact family of InnoDB row formats optimize storage for variable-length character sets. See COMPACT Row Format Characteristics. Otherwise, M × w bytes, <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set.
BINARY(M)                    M bytes, 0 <= M <= 255
VARCHAR(M), VARBINARY(M)     L + 1 bytes if column values require 0 − 255 bytes, L + 2 bytes if values may require more than 255 bytes
TINYBLOB, TINYTEXT           L + 1 bytes, where L < 28
BLOB, TEXT                   L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT       L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT           L + 4 bytes, where L < 232
ENUM('value1','value2',...)  1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)
SET('value1','value2',...)   1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum)
0
répondu Rohit.007 2018-08-27 09:16:12