Въпросът е зададен на serverfault също.
Може да искате да разгледате тази статия което обяснява много за размерите на редовете в MySQL. Важно е да се отбележи, че дори и да използвате полета TEXT или BLOB, размерът на вашия ред все още може да бъде над 8K (ограничение за InnoDB), тъй като той съхранява първите 768 байта за всяко поле, вградено в страницата.
Най-лесният начин да поправите това е да използвате файлов формат Barracuda с InnoDB. Това основно се отървава от проблема като цяло, като се съхранява само 20-байтовият указател към текстовите данни, вместо да се съхраняват първите 768 байта.
Методът, който работеше за ОП там беше:
-
Добавете следното към
my.cnf
файл под[mysqld]
раздел.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
таблицата да се използваROW_FORMAT=COMPRESSED
.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Има вероятност горното все още да не разреши проблемите ви. Това е известен (и проверен) бъг
с InnoDB двигател и временно решение за момента е да се върнем към MyISAM двигател като временно съхранение. И така, във вашия my.cnf
файл:
internal_tmp_disk_storage_engine=MyISAM