Pytanie zostało zadane na usterka serwera też.
Możesz rzucić okiem na ten artykuł co wyjaśnia wiele o rozmiarach wierszy MySQL. Należy pamiętać, że nawet jeśli używasz pól TEXT lub BLOB, rozmiar wiersza może nadal przekraczać 8K (limit dla InnoDB), ponieważ przechowuje on pierwsze 768 bajtów dla każdego pola w linii na stronie.
Najprostszym sposobem rozwiązania tego problemu jest użycie formatu pliku Barracuda z InnoDB. To w zasadzie całkowicie eliminuje problem, przechowując tylko 20-bajtowy wskaźnik do danych tekstowych zamiast przechowywania pierwszych 768 bajtów.
Metoda, która zadziałała w przypadku PO była:
-
Dodaj następujące do
my.cnf
plik w[mysqld]
sekcja.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
tabela do użyciaROW_FORMAT=COMPRESSED
.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Istnieje możliwość, że powyższe nadal nie rozwiąże twoich problemów. Jest to znany (i zweryfikowany) błąd
z InnoDB silnik, a tymczasową poprawką jest powrót do MyISAM silnik jako magazyn tymczasowy. Tak więc w swoim my.cnf
plik:
internal_tmp_disk_storage_engine=MyISAM