Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Row size too large. / 2 сообщений из 2, страница 1 из 1
27.10.2014, 21:45:52
    #38788664
vipTelnet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Row size too large.
Всем привет

поначалу была такая таблица
CREATE TABLE IF NOT EXISTS `xliw4_virtuemart_products_ru_ru` (
`virtuemart_product_id` int(1) unsigned NOT NULL,
`product_s_desc` varchar(2000) NOT NULL DEFAULT '',
`product_desc` varchar(18400) NOT NULL DEFAULT '',
`product_name` char(180) NOT NULL DEFAULT '',
`metadesc` varchar(400) NOT NULL DEFAULT '',
`metakey` varchar(400) NOT NULL DEFAULT '',
`customtitle` char(255) NOT NULL DEFAULT '',
`slug` char(192) NOT NULL DEFAULT '',
PRIMARY KEY (`virtuemart_product_id`),
UNIQUE KEY `slug` (`slug`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

я добавил там 2 поля
`product_scheme` text NOT NULL,
`product_characteristics` text NOT NULL,
и она стало такой

CREATE TABLE IF NOT EXISTS `xliw4_virtuemart_products_ru_ru` (
`virtuemart_product_id` int(1) unsigned NOT NULL,
`product_s_desc` varchar(2000) NOT NULL DEFAULT '',
`product_desc` varchar(18400) NOT NULL DEFAULT '',
`product_name` char(180) NOT NULL DEFAULT '',
`metadesc` varchar(400) NOT NULL DEFAULT '',
`metakey` varchar(400) NOT NULL DEFAULT '',
`customtitle` char(255) NOT NULL DEFAULT '',
`slug` char(192) NOT NULL DEFAULT '',
`product_scheme` text NOT NULL,
`product_characteristics` text NOT NULL,
PRIMARY KEY (`virtuemart_product_id`),
UNIQUE KEY `slug` (`slug`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

и после этого при сохранении начало выдавать мне вот такую вот ошибку

vmError: alterTable CHANGE xliw4_virtuemart_products_ru_ru.product_characteristics : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs SQL=ALTER TABLE `xliw4_virtuemart_products_ru_ru` CHANGE COLUMN `product_scheme` `product_scheme` CHAR(255) NOT NULL DEFAULT '

Помогите разобраться в ошибке
я так понял что это какое то ограничение по возможному количеству сохраняемой информации в 1 строке, сколько с MyISAM работаю такое вижу в первый раз
...
Рейтинг: 0 / 0
27.10.2014, 22:12:51
    #38788684
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Row size too large.
Насколько я помню, при расчет ограничений размера для кодировки utf8 один символ условно принимается равным 3 байтам. Если просуммировать все размеры полей, то как раз где-то в районе 65535 получается. Видимо, немного зашкаливает.
Так что либо уменьшайте размеры полей (например `product_desc`), либо переходите на однобайтовую кодировку, либо какие-то из полей вместо varchar делайте TEXT (тот же `product_desc`).

И, кстати, все char, насколько я понимаю, лучше заменить на varchar. На данную ошибку это не повлияет, но сэкономит в будущем немало ресурсов. Есть вероятность, что что-то где-то в коде заточено под тип char, но мне кажется это маловероятным.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Row size too large. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]