2009-08-28 19 views
9

Mam bazę danych MySQL, w której przechowuję mnóstwo informacji tekstowych w polu tekstowym w bazie danych. Kolumny toKolumna tekstu MySQL jest obcięta

Nazwa: info
Type: text
Sortowanie: utf8_general_ci

miałem wkładkę użytkownika ~ 64KB informacji w tej dziedzinie i nie wpada w panikę. Obetnie 3 ostatnie znaki. Co w tym przypadku kończy się na zakładce, więc wszystko po niej wkręca się na stronie. Jeśli ręcznie wchodzę do bazy danych i usuwam kilka listów, a następnie dodajemy ją, a następnie następnym razem, kiedy ją edytuję, te ostatnie 3 zostaną usunięte ponownie.

phpmyadmin stwierdza, że ​​pole ma być długie i nie można go edytować. Więc próbowałem edytować go na mojej stronie cms i nadal otrzymałem ten sam wynik.

Czy są jakieś znane problemy z taką ilością danych w kolumnie z pojedynczą kolumną bazy danych w mysql? Wygląda na to, że nie powinno być.

Odpowiedz

13

Myślę, że maksymalny rozmiar pola TEKST MySQL jest mniejszy niż 2^16 bajtów. Korzystanie z kodowania UTF-8 może oznaczać nawet mniej znaków. Możesz użyć MEDIUMTEXT dla 2^24 lub LONGTEXT dla 2^32 bajtów zamiast, zobacz MySQL-Docs dla szczegółów.

Ah, i upewnij się, że sprawdziłeś swój rozmiar max_allowed_packet.

+6

Nie wiedziałem, że w MySQL istnieją różne typy tekstu. – corymathews

+0

LONGTEXT zamiast BIGTEXT – SysHex

+1

Dzięki, SysHex, masz rację oczywiście. Poprawiłem to. –

0

Jest to coś, co nazywa documentation, mówiąc, że przechowywanie jest wymagane dla typów danych:

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 

Zauważ, że 2^16 == 65536

0

Moje rozumienie jest tekst maksymalną wartość 65.000 bajty i wszystko większe niż to zostanie obcięte. To wydaje się wyjaśniać twoją sytuację. Mówisz, że twój użytkownik wprowadza około 64kb, czy może to być nieco ponad 65kb, o kilka (trzy) bajty?

Należy rozważyć użycie obiektu BLOB.

5

Trzeba pamiętać, że TEKST ma maksimum 65 535 znaków. Jeśli twoja zawartość przekracza 64 kilobajty, możliwe, że przekroczysz limit znaków terenowych. Proponuję zmienić typ kolumny na MEDIUMTEXT lub LONGTEXT i sprawdzić, czy to rozwiąże problem.

Powiązane problemy