Я хотів би дізнатися, який максимальний розмір для типу MySQL VARCHAR.
Я читав, що максимальний розмір обмежується розміром рядка, який становить близько 65k. Я спробував встановити поле в varchar(20000)
, але він каже, що це занадто великий розмір.
Я міг би встановити його на varchar(10000)
. Який точний максимум я можу встановити?
Майте на увазі, що MySQL має обмеження на максимальний розмір рядка Внутрішнє представлення таблиці MySQL має максимальний розмір рядка 65 535 байт, не враховуючи типи BLOB і TEXT. Стовпці BLOB і TEXT дають лише від 9 до 12 байт на обмеження розміру рядка, оскільки їх вміст зберігається окремо від решти рядка. Докладніше про Обмеження на кількість стовпців і розмір рядків таблиці.
Максимальний розмір, який може займати один стовпець, відрізняється до і після MySQL 5.0.3. Значення в стовпцях VARCHAR є рядками змінної довжини. Довжина може бути вказана як значення від 0 до 255 до MySQL 5.0.3, і від 0 до 65,535 в 5.0.3 і більш пізніх версіях. Ефективна максимальна довжина VARCHAR в MySQL 5.0.3 і пізніших версіях залежить від максимального розміру рядка (65 535 байт, який розподіляється між усіма стовпцями) і використовуваного набору символів.
Однак, зверніть увагу, що ліміт буде нижчим, якщо ви використовуєте багатобайтовий набір символів, наприклад, utf8 або utf8mb4.
**Використовуйте типи TEXT
, щоб подолати обмеження на розмір рядка.
Чотири типи TEXT - це TINYTEXT, TEXT, MEDIUMTEXT і LONGTEXT. Вони відповідають чотирьом типам BLOB і мають однакові максимальні довжини та вимоги до зберігання.
**Детальніше про типи BLOB і TEXT
**Ще більше
Ознайомтеся з більш детальною інформацією про Вимоги до зберігання типів даних, яка стосується вимог до зберігання всіх типів даних.
також можна використовувати MEDIUMBLOB/LONGBLOB або MEDIUMTEXT/LONGTEXT
Тип BLOB в MySQL може зберігати до 65 534 байт, якщо ви спробуєте зберегти більше цього обсягу даних, MySQL буде усікати дані. MEDIUMBLOB може зберігати до 16 777 213 байт, а LONGBLOB може зберігати до 4 294 967 292 байт.
Можна використовувати тип TEXT
, який не обмежується 64КБ.