|
|
|
Row size too large.
|
|||
|---|---|---|---|
|
#18+
Всем привет поначалу была такая таблица 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 работаю такое вижу в первый раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 21:45:52 |
|
||
|
Row size too large.
|
|||
|---|---|---|---|
|
#18+
Насколько я помню, при расчет ограничений размера для кодировки utf8 один символ условно принимается равным 3 байтам. Если просуммировать все размеры полей, то как раз где-то в районе 65535 получается. Видимо, немного зашкаливает. Так что либо уменьшайте размеры полей (например `product_desc`), либо переходите на однобайтовую кодировку, либо какие-то из полей вместо varchar делайте TEXT (тот же `product_desc`). И, кстати, все char, насколько я понимаю, лучше заменить на varchar. На данную ошибку это не повлияет, но сэкономит в будущем немало ресурсов. Есть вероятность, что что-то где-то в коде заточено под тип char, но мне кажется это маловероятным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 22:12:51 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1834023]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
120ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 390ms |

| 0 / 0 |
