Я хотел бы знать, каков максимальный размер для типа MySQL VARCHAR.
Я читал, что максимальный размер ограничен размером строки, который составляет около 65 КБ. Я попытался установить поле, varchar(20000)
но оно говорит, что оно слишком большое.
Я мог бы установить это varchar(10000)
. Какой точный максимум я могу установить?
Ответы:
Имейте в виду, что MySQL имеет максимальный размер строки
Максимальный размер, который может занимать один столбец, отличается до и после MySQL 5.0.3
Однако обратите внимание, что ограничение ниже, если вы используете многобайтовый набор символов, такой как utf8 или utf8mb4.
Используйте
TEXT
типы по порядку, чтобы преодолеть ограничение размера строки.Подробнее о типах BLOB и TEXT
Даже больше
Ознакомьтесь с более подробной информацией о требованиях к хранению типов данных, которые касаются требований к хранению для всех типов данных.
источник
Согласно онлайн-документам , существует ограничение в 64 КБ, и вы можете определить размер строки, используя:
Вы должны иметь в виду, что длины столбцов не являются однозначным отображением их размера. Например,
CHAR(10) CHARACTER SET utf8
требуется три байта для каждого из десяти символов, поскольку эта конкретная кодировка должна учитывать свойство «три байта на символ»utf8
(это кодировка MySQL,utf8
а не «настоящий» UTF-8, который может иметь до четырех байтов). ).Но, если ваш размер строки приближается к 64 КБ, вы можете изучить схему вашей базы данных. Это редкая таблица, которая должна быть настолько широкой в правильно настроенной (3NF) базе данных - это возможно, но не очень часто.
Если вы хотите использовать больше, вы можете использовать
BLOB
илиTEXT
. Они не учитываются при ограничении строки в 64 КБ (кроме небольшого административного следа), но вам необходимо знать о других проблемах, связанных с их использованием, таких как невозможность сортировки с использованием всего текстового блока за пределами определенного числа. символов (хотя это может быть настроено вверх), заставляя временные таблицы быть на диске, а не в памяти, или настраивая буферы связи клиента и сервера для эффективной обработки размеров.Допустимые размеры:
У вас все еще есть несоответствие байтов / символов (так что в
MEDIUMTEXT utf8
столбце может храниться «только» около полумиллиона символов(16M-1)/3 = 5,592,405
), но это все равно значительно расширяет ваш диапазон.источник
utf8mb4
в MySQL .utf8mb4
имя MySql для того, что остальное слово называет utf8.Источник
источник
CHARACTER SET utf8
в примерах. Так и должно бытьCHARACTER SET utf8mb4
(если вы хотите, чтобы весь текст в Юникоде хранился должным образом ... а кому это не нужно?)CHARSET=utf8mb4
использованияVARCHAR(16383)
.Из документации MySQL:
Ограничения для VARCHAR варьируются в зависимости от используемой кодировки. Использование ASCII будет использовать 1 байт на символ. Это значит, что вы можете хранить 65 535 символов. Использование utf8 будет использовать 3 байта на символ, в результате чего ограничение на число символов составит 21 844. НО, если вы используете современную многобайтовую кодировку utf8mb4, которую вы должны использовать! Он поддерживает смайлики и другие специальные символы. Он будет использовать 4 байта на символ. Это ограничит количество символов в таблице до 16 383. Обратите внимание, что другие поля, такие как INT, также будут учитываться в этих пределах.
Вывод:
utf8 максимум 21 844 символов
utf8mb4 максимум 16 383 символов
источник
Вы также можете использовать MEDIUMBLOB / LONGBLOB или MEDIUMTEXT / LONGTEXT
Тип BLOB в MySQL может хранить до 65 534 байта, если вы попытаетесь сохранить больше данных, MySQL будет их обрезать. MEDIUMBLOB может хранить до 16 777 213 байт, а LONGBLOB - до 4 294 967 292 байт.
источник
До версии Mysql 5.0.3 тип данных Varchar может хранить 255 символов, а с версии 5.0.3 - 65 535 символов.
НО это ограничение максимального размера строки 65 535 байт. Это означает, что, включая все столбцы, он не должен превышать 65 535 байт.
В вашем случае может случиться так, что когда вы пытаетесь установить более 10000, оно превышает 65 535, и mysql выдаст ошибку.
Чтобы получить больше информации: https://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
блог с примером: http://goo.gl/Hli6G3
источник
Вы можете использовать
TEXT
тип , который не ограничен 64 КБ.источник