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

307

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

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

  • 5
    Ввести 64 КБ в простое текстовое поле? больно ...
  • 152
    @Marc B Никогда не стоит недооценивать способность пользователя вставлять огромное количество мусора в поле для личных текстовых сообщений.
Показать ещё 1 комментарий
Теги:
database

7 ответов

505
Лучший ответ

См. максимальные номера: 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.

  • 2
    @ fyr- Вот что значит для L + 2 байта, где L <2 ^ 16? Не могли бы вы определить это немного больше? В противном случае вы можете сказать мне, сколько символов мы можем хранить в текстовом поле? Пожалуйста....
  • 2
    @JJ L - это число символов, и число символов должно быть меньше 2 до степени 16. 2 ^ 16 = 65536. Таким образом, вы можете ввести 65535 символов, которые потребляют 65535 байт + 3 байта = 65 538 байт на полный заполненное поле.
Показать ещё 7 комментариев
88

TINYTEXT: 256 байт
ТЕКСТ: 65,535 байт
MEDIUMTEXT: 16,777,215 байт
LONGTEXT: 4 294 967 295 байт.

  • 5
    Я думаю, что TINYTEXT должен быть 255 байтов вместо 256 байтов, в соответствии с принятым ответом?
21
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.

16

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

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

7

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

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

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

Вам не нужно указывать длину. Если вам нужны другие типы данных использования символов MEDIUMTEXT или LONGTEXT. С VARCHAR длина спецификаций не относится к требованию Storage, но только для того, как данные извлекаются из базы данных.

1
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, если вам нужно сохранить большой текст, например главу романа.

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню