Максимальный размер строки MySQL составляет L символов плюс 3 = 65535 - PullRequest
0 голосов
/ 04 января 2012

В документации MySQL максимальный размер строки в таблице определяется как 65535 или 2 ** 16-1. Максимальный размер столбца составляет L символов + два байта для указания размера.

Не удалось выполнить следующие команды с размером строки:

create table_row_size (
 a varchar(65533)
);

Проходит следующее:

create table_row_size (
 a varchar(65532)
);

Так, где этот дополнительный байт используется?

Я использую 5.5.19 с движком Innodb

Ответы [ 2 ]

1 голос
/ 04 января 2012

Поскольку вы не определили a как NOT NULL, для отслеживания этого необходим дополнительный байт. MySQL использует один бит флагов (округленный до ближайшего байта) для каждого обнуляемого столбца.

Обратите внимание, что для больших данных обычно предпочтительнее использовать столбец TEXT или BLOB, поскольку они хранятся отдельно от строки.

1 голос
/ 04 января 2012

Вы должны пометить столбец как NOT NULL, чтобы получить 65533 как максимальную длину VARCHAR.

...