Я создаю форму для отправки личных сообщений и хочу установить значение maxlength
текстового поля, соответствующее максимальной длине поля text
в моей таблице базы данных MySQL. Сколько символов может хранить текстовое поле типа?
Если много, могу ли я указать длину в поле типа текста базы данных, как я бы хотел с varchar?
См. максимальные номера: 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 - количество байтов в текстовом поле. Таким образом, максимальное число символов для текста равно 2 16 -1 (с использованием однобайтовых символов). Средство 65 535 символов (с использованием однобайтовых символов).
кодировка UTF-8/MultiByte. Используя кодировку MultiByte, каждый символ может потреблять более 1 байта пространства. Для UTF-8 потребление пространства составляет от 1 до 4 байтов на char.
TINYTEXT: 256 байт
ТЕКСТ: 65,535 байт
MEDIUMTEXT: 16,777,215 байт
LONGTEXT: 4 294 967 295 байт.
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
Примечание. Если вы используете многобайтовые символы, столбец "Точное максимальное допустимое значение длины" будет иметь разную длину. Например: если вы используете двухбайтовые символы, точная максимальная длина для 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 длина спецификаций не относится к требованию Storage, но только для того, как данные извлекаются из базы данных.
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
CHANGE text_field
LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;