[cause of the problem]
summarizes the following reason: mysql-innodb stores data according to page, max size of each page is 16k, and then each page has two lines of data, so each line has a maximum of 8k data. If your field is a blob or something, it will be stored in an overflow area outside the page.
But innodb's default approach store format stores the first 864 bytes of each blob field in the page, so if you exceed a certain number of blobs, the single line size will exceed 8k, so an erroris reported.
solution is to use innodb's Barracuda storage format
This format handles blob fields by storing only a 20byte pointer in the page, and everything else has an overflow area, so you can't easily go beyond 8k.