2009-08-28 18 views
9

Ho un database MySQL in cui sto memorizzando un gruppo di informazioni testuali in un campo di testo nel database. Le colonne sonoColonna di testo MySQL troncata

Nome: informazioni
Type: text
fascicolazione: utf8_general_ci

ho avuto un inserto utente ~ 64 KB di informazioni nel campo e spaventa. Tronterà gli ultimi 3 caratteri fuori. Che in questo caso capita di essere la fine di una scheda in modo da rovinare tutto dopo di essa sulla pagina. Se vado manualmente nel database e rimuovo un paio di lettere e aggiungo il retro, la volta successiva che andrò a modificarlo, quegli ultimi 3 verranno rimossi di nuovo.

phpmyadmin sta affermando che il campo è troppo lungo e potrebbe non essere modificabile. Così ho provato a modificarlo sulla mia pagina cms e ho ricevuto lo stesso risultato.

Esistono problemi noti con questi molti dati in una singola colonna di testo del database in mysql? Non sembra che ci dovrebbe essere.

risposta

13

Penso che la dimensione massima di un campo MySQL TEXT sia inferiore a 2^16 byte. Usando la codifica UTF-8, questo può significare anche meno caratteri. È possibile utilizzare MEDIUMTEXT per 2^24 o LONGTEXT per 2^32 byte, per i dettagli vedere lo MySQL-Docs.

Ah, e assicuratevi di controllare la vostra dimensione max_allowed_packet.

+6

Non mi sono reso conto che c'erano diversi tipi di testo in MySQL. – corymathews

+0

LONGTEXT invece di BIGTEXT – SysHex

+1

Grazie, SysHex, hai ragione, ovviamente. L'ho corretto. –

0

C'è questa cosa chiamata documentation, dicendo che la memoria richiesta per i tipi di dati è:

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, che il 2^16 == 65536

0

La mia comprensione è testo ha un valore massimo di 65.000 byte e qualsiasi cosa più grande di quella verrà troncata. Questo sembrerebbe spiegare la tua situazione. Dici che il tuo utente sta inserendo circa 64kb, potrebbe essere poco più di 65kb, di pochi (tre) byte?

Considerare l'utilizzo di un BLOB.

5

Devi ricordare che il TESTO ha un massimo di 65.535 caratteri. Se il tuo contenuto supera i 64K byte è possibile che superi il limite dei caratteri di campo. Ti suggerisco di cambiare il tipo di colonna su MEDIUMTEXT o LONGTEXT e vedere se questo risolve il tuo problema.

Problemi correlati