Максимальная длина для текста типа MySQL

Я создаю форму для отправки личных сообщений и хотите установить maxlength значение textarea, соответствующее максимальной длине text поле в моей таблице базы данных MySQL. Сколько символов может хранить текстовое поле типа?

Если много, смогу ли я указать длину в поле текстового типа базы данных, как это было бы с varchar?

8 ответов


см. для максимальных чисел: 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-количество байтов в текстовом поле. Поэтому maximmum количество символов для текста-216-1 (с использованием однобайтовых символов). Означает 65 535 символов (с использованием однобайтовых символов).

UTF-8 / многобайтовое кодирование: при использовании Многобайтовой кодировки каждый символ может занимать более 1 байта пространства. Для космоса UTF-8 расход составляет от 1 до 4 байт на символ.


TINYTEXT: 256 байт
Текст: 65535 байт
MEDIUMTEXT: 16,777,215 байт
LONGTEXT: 4294967295 байт


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

Примечание: при использовании многобайтовых символов столбец " Exact Max. Длина разрешена" будет иметь разную длину. Например: если вы используете 2-байтовые символы, точная максимальная длина для TINYTEXT будет 127 символов. В принципе, это количество байтов, разрешенных -1.


согласно http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html, предел L + 2 bytes, where L < 2^16, или 64k.

вам не нужно беспокоиться об ограничении его, он автоматически разбивается на куски, которые добавляются по мере роста строки, поэтому он не всегда будет слепо использовать 64k.


сколько символов может хранить текстовое поле типа?

по данным документация вы можете использовать максимум 21,844 символов, если кодировка UTF8

Если много, смогу ли я указать длину в поле текстового типа db, как это было бы с varchar?

вам не нужно указывать длину. Если вам нужно больше символов, используйте типы данных MEDIUMTEXT или LONGTEXT. С varchar, длина указав ключ не для Требование хранения, только для того, как данные извлекаются из базы данных.


TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

TINYTEXT - это строковый тип данных, который может хранить до 255 символы.

TEXT - это строковый тип данных, который может хранить до 65,535 символы. TEXT обычно используется для этой статьи.

LONGTEXT - строковый тип данных с максимальной длиной 4,294,967,295 символы. Использовать LONGTEXT если вам нужно хранить большой текст, например главу из романа.


TEXT - строковый тип данных, который может хранить до 65 535 символов. Но все же, если вы хотите сохранить больше данных, измените его тип данных на LONGTEXT

ALTER TABLE name_tabel изменить text_field НАБОР СИМВОЛОВ LONGTEXT utf8 сличить utf8_general_ci NOT NULL;


для MySql версии 8.0.

Требования Хранения Числового Типа

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

значения для десятичных (и числовых) столбцов представлены с использованием двоичного формата, который упаковывает девять десятичных (базовых 10) цифр в четыре байта. Хранение целых и дробных частей каждого значения определяется отдельно. Для каждого кратного девяти цифр требуется четыре байта, а для" оставшихся " цифр требуется некоторая доля четырех байтов. Дано хранилище, необходимое для избыточных цифр по следующей таблице.

требования к хранения типа даты и времени Для столбцов TIME, DATETIME и TIMESTAMP хранилище, необходимое для таблиц, созданных до MySQL 5.6.4, отличается от таблиц, созданных от 5.6.4 on. Это связано с изменением в 5.6.4, которое позволяет этим типам иметь дробную часть, которая требует от 0 до 3 байтов.

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

начиная с MySQL 5.6.4, хранилище для года и даты остается неизменным. Однако, время, ДАТАВРЕМЯ, и timestamp иначе. DATETIME упаковывается более эффективно, требуя 5, а не 8 байтов для нефракционной части, и все три части имеют дробную часть, которая требует от 0 до 3 байтов, в зависимости от точности дробных секунд сохраненных значений.

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

например, TIME(0), TIME(2), TIME(4) и TIME (6) используют 3, 4, 5 и 6 байт соответственно. Время и время(0) эквивалентны и требуют одинакового хранения.

для деталей о внутреннем представлении временные значения, см. MySQL Internals: важные алгоритмы и структуры.

Требования К Хранению Типа Строки В следующей таблице M представляет объявленную длину столбца в символах для небинарных строковых типов и байтах для двоичных строковых типов. L представляет фактическую длину в байтах, заданного строкового значения.

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)