2009-08-28 7 views
9

Tengo una base de datos MySQL en la que estoy almacenando un montón de información textual en un campo de texto en la base de datos. Las columnas esColumna de texto MySQL siendo truncada

Nombre: información
Type: text
Colación: utf8_general_ci

que tenía un inserto de usuario ~ 64kb de información en el campo y se asusta. Truncará los últimos 3 caracteres. Que en este caso es el final de una pestaña, así que se arruina todo después de eso en la página. Si ingreso manualmente a la base de datos y elimino un par de letras y agrego el reverso, la próxima vez que vaya a editarlo, las últimas 3 se eliminarán nuevamente.

phpmyadmin se indica que el campo es largo y puede no ser editable. Así que traté de editarlo en mi página de cms y todavía recibí el mismo resultado.

¿Hay problemas conocidos con esta cantidad de datos en una columna de texto única base de datos en MySQL? No parece que debería haberlo.

Respuesta

13

creo que el tamaño máximo de un campo de texto MySQL es menor que 2^16 bytes. Usando la codificación UTF-8, esto puede significar aún menos caracteres. En su lugar, podría usar MEDIUMTEXT para 2^24 o LONGTEXT para 2^32 bytes, consulte MySQL-Docs para obtener más información.

Ah, y asegúrese de comprobar el tamaño de max_allowed_packet.

+6

No me di cuenta de que había diferentes tipos de texto en MySQL. – corymathews

+0

LONGTEXT en lugar de BIGTEXT – SysHex

+1

Gracias, SysHex, tienes razón, por supuesto. Lo corregí. –

0

Hay esta cosa llamada documentation, diciendo que el almacenamiento necesario para los tipos de datos es:

BLOB, TEXT L + 2 bytes, where L < 2^16 
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 

Nota, que 2^16 == 65536

0

Mi entendimiento es texto tiene un valor máximo de 65.000 los bytes y cualquier cosa más grande que eso se truncarán. Esto parece explicar su situación. Usted dice que su usuario está ingresando alrededor de 64 kb, ¿podría ser algo más de 65 kb, con unos pocos (tres) bytes?

Considere el uso de un BLOB.

5

Hay que recordar que el texto tiene un máximo de 65.535 caracteres. Si su contenido excede los 64,000 bytes, es posible que esté excediendo el límite de los caracteres de campo. Sugiero cambiar su tipo de columna a MEDIUMTEXT o LONGTEXT y ver si eso resuelve su problema.

Cuestiones relacionadas