ERROR 1118 (42000): Row size too large (> 8126)

MKI-Miro
Člen | 271
+
0
-

Ahojte

Mam otazku na diskusiu. Mame web s 24 jazykmi. Ak spravime sql tabulku kde by boli stplce

name_sk, name_cz, name_pl … (24 stlpcov typu varchar 120)
meta_name_sk, meta_name_cz, meta_name_pl (24 stlpcov typu varchar 60)
meta_desc_sk, meta_desc_cz, meta_desc_pl (24 stlpcov typu varchar 155)

Tak skor ci neskor natrafime na chybu/limit ERROR 1118 (42000): Row size too large (> 8126).
https://dev.mysql.com/…t-limit.html

Teraz je otazka ake by bolo nejlepsie riesenie?

  1. Zmenit stlpce z varcharov na text a dlzku osetrovat iba v aplikacii
  2. Rozdelit tabulku na viacere podla jazykov a teda ze co jazyk to vlastna tabulka (vyhodou by bolo ze pri joine nie je potrebna ziadna dalsia where podmienka)
  3. Rozdelit tabulku podla typov a teda pre name jedna tabulka, meta_name druha, meta_desc_ tretia

Pripadne nejake ine riesenie?

Dakujem

ViPEr*CZ*
Člen | 812
+
0
-

Osobne to delam pres child… tj. 1:N tabulku.

David Grudl
Nette Core | 8135
+
+2
-

Obecně platí pravidlo, že přidání dalšího jazyka by nemělo vést k tomu, aby se používal příkaz ALTER. Takže další tabulka.

MajklNajt
Člen | 471
+
+1
-

ako písal @ViPEr*CZ* použi väzbu 1:N – vytvoríš si tabuľku so stĺpcami: page_id, lang, name, meta_name, meta_desc atď..

budeš mať 24 riadkov pre každé jedno page_id a vždy si vytiahneš dáta pre daný jazyk: WHERE page_id = ? AND lang = ?

MKI-Miro
Člen | 271
+
0
-

dakujem