Me gustaría saber cuál es el tamaño máximo para un tipo MySQL VARCHAR.
Leí que el tamaño máximo está limitado por el tamaño de la fila, que es de aproximadamente 65k. Intenté configurar el campo varchar(20000)
pero dice que es demasiado grande.
Podría configurarlo varchar(10000)
. ¿Cuál es el máximo exacto en el que puedo configurarlo?
Respuestas:
Tenga en cuenta que MySQL tiene un límite máximo de tamaño de fila
El tamaño máximo que puede ocupar una sola columna es diferente antes y después de MySQL 5.0.3
Sin embargo, tenga en cuenta que el límite es menor si utiliza un conjunto de caracteres de varios bytes como utf8 o utf8mb4.
Utilice los
TEXT
tipos para superar el límite de tamaño de fila.Más detalles sobre los tipos BLOB y TEXT
Aún más
Pedido más detalles sobre los requisitos de almacenamiento de tipo de datos que se ocupa de los requisitos de almacenamiento para todos los tipos de datos.
fuente
Según los documentos en línea , hay un límite de filas de 64K y puede calcular el tamaño de la fila usando:
Debe tener en cuenta que las longitudes de columna no son un mapeo individual de su tamaño. Por ejemplo,
CHAR(10) CHARACTER SET utf8
requiere tres bytes para cada uno de los diez caracteres, ya que esa codificación particular debe tener en cuenta la propiedad de tres bytes por carácter deutf8
(esa es lautf8
codificación de MySQL en lugar de UTF-8 "real", que puede tener hasta cuatro bytes )Pero, si el tamaño de su fila se acerca a 64 K, es posible que desee examinar el esquema de su base de datos. Es una tabla rara que debe ser tan amplia en una base de datos configurada correctamente (3NF); es posible, pero no muy común.
Si desea usar más que eso, puede usar los tipos
BLOB
oTEXT
. Estos no cuentan contra el límite de 64K de la fila (que no sea una pequeña huella administrativa), pero debe ser consciente de otros problemas que surgen de su uso, como no poder ordenar usando todo el bloque de texto más allá de un cierto número de caracteres (aunque esto se puede configurar hacia arriba), lo que obliga a las tablas temporales a estar en el disco en lugar de en la memoria, o tener que configurar los búferes de comunicaciones del cliente y el servidor para manejar los tamaños de manera eficiente.Los tamaños permitidos son:
Todavía tiene la falta de coincidencia de bytes / caracteres (de modo que una
MEDIUMTEXT utf8
columna puede almacenar "solo" aproximadamente medio millón de caracteres(16M-1)/3 = 5,592,405
) , pero aún así amplía enormemente su rango.fuente
utf8mb4
en MySQL .utf8mb4
es el nombre de MySql para lo que el resto de la palabra llama utf8.Fuente
fuente
CHARACTER SET utf8
en ejemplos. Debería serloCHARACTER SET utf8mb4
(si desea que todo el texto Unicode se almacene correctamente ... y ¿quién no quiere eso?)CHARSET=utf8mb4
su usoVARCHAR(16383)
.De la documentación de MySQL:
Los límites para el VARCHAR varían según el juego de caracteres utilizado. Usar ASCII usaría 1 byte por carácter. Lo que significa que podría almacenar 65.535 caracteres. El uso de utf8 usará 3 bytes por carácter, lo que dará como resultado un límite de caracteres de 21,844. ¡PERO si está utilizando el moderno juego de caracteres multibyte utf8mb4 que debería usar! Es compatible con emojis y otros caracteres especiales. Utilizará 4 bytes por carácter. Esto limitará el número de caracteres por tabla a 16,383. Tenga en cuenta que otros campos como INT también se contarán en estos límites.
Conclusión:
utf8 máximo de 21.844 caracteres
utf8mb4 máximo de 16,383 caracteres
fuente
también puede usar MEDIUMBLOB / LONGBLOB o MEDIUMTEXT / LONGTEXT
Un tipo BLOB en MySQL puede almacenar hasta 65.534 bytes, si intenta almacenar más de esta cantidad de datos, MySQL truncará los datos. MEDIUMBLOB puede almacenar hasta 16.777.213 bytes, y LONGBLOB puede almacenar hasta 4.294.967.292 bytes.
fuente
Antes de Mysql versión 5.0.3, el tipo de datos Varchar puede almacenar 255 caracteres, pero desde 5.0.3 puede almacenar 65,535 caracteres.
PERO tiene una limitación del tamaño máximo de fila de 65.535 bytes. Significa incluir todas las columnas, no debe tener más de 65.535 bytes.
En su caso, es posible que cuando intente establecer más de 10000 supere los 65,535 y mysql dará el error.
Para más información: https://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
blog con ejemplo: http://goo.gl/Hli6G3
fuente
Puede usar el
TEXT
tipo , que no está limitado a 64 KB.fuente