Forums / National / Russian / Тех. поддержка / Проблема больших страниц

С этим нужно что-то делать!

Boss
#1 2009-06-20 11:42
При переходе с SED на COT возникла проблема. Как выяснилось, COT не может записать в базу страницы с большим объемом текста. Приведу пример для одной из страниц у меня на сайте. В таблицу page_text он максимум записывает 39 284 байта. В таблицу page_html записывается максимум 40 241 байт. Все что более этого объема - просто обрезается. Весь данный текст у меня на старом сайте занимает с бб-кодами 41 219 байт и SED его без проблем записывал в базу.

Насколько я вижу сама SQL таблица не накладывает ограничений. И у SED и у COT стоит тип для "page_text" просто "text". Это что из-за UTF-8 что ли? Что делать? Есть какие-нибудь пути решения?

Как выяснилось большие тексты упираются в ограничения именно типа ячейки таблицы - TEXT. Изменив его на MEDIUMTEXT проблема решается.

Тип столбцаТребуемая память
TINYTEXTL+1 байт, где L < 2^8
TEXTL+2 байт, где L < 2^16
MEDIUMTEXTL+3 байт, где L < 2^24
LONGTEXTL+4 байт, где L < 2^32

Каждый из типов увеличивает размер в принципе до приемлемого уровня. Я не предлагаю LONGTEXT, но как минимум MEDIUMTEXT по-моему стоит установить по умолчанию в COT для текстов страниц. Статьи бывают больше. 40 кб далеко не предел.
This post was edited by Boss (2009-06-20 12:37, 14 years ago)
Trustmaster
#2 2009-06-20 18:50
Да, это из-за того, что один символ русского алфавита занимает в UTF8 два байта, а не один. Перейти с TEXT на MEDIUMTEXT или LONGTEXT не проблема.
ALTER TABLE sed_pages MODIFY `page_text` MEDIUMTEXT COLLATE utf8_unicode_ci;
ALTER TABLE sed_pages MODIFY `page_html` MEDIUMTEXT COLLATE utf8_unicode_ci;
Можно смело добавлять Ticket.
May the Source be with you!