Existuje limit pro funkci CONCAT?

rade-brno

Existuje limit pro funkci CONCAT?
« kdy: 25. 09. 2014, 20:42:06 »
Zdravím,

mám následující funkci v PHP:


která generuje JSON z DB pomocí volání concat.

Vše fungovalo roky perfektně, než jeden uživatel vložil do jednoho záznamu v DB data o velikosti více jak asi 24kB. V tu chvíli přestala funkce správně pracovat, přesněji řečeno generoval se špatný JSON formát.

Marně jsem hledal na googlu nějakou informaci a marně jsem o několik řádů nastavoval všemožné limity v konfiguraci MySQL. Nakonec jsem musel celý problém řešit přímo v PHP, což mě nepřijde tak elegantní a i uživatel pozná, že to trvá déle...

Proto se ptám, existuje nějaký limit pro funkci CONCAT?

Díky, R.

PS: dokumentace zde:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat


rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #1 kdy: 25. 09. 2014, 20:46:21 »
Jedná se o problematiku MySQL, příště se polepším a uvedu do předmětu...

OndraP

Re:Existuje limit pro funkci CONCAT?
« Odpověď #2 kdy: 25. 09. 2014, 21:56:23 »
Zkoušel jsi nastavit group_concat_max_len?  SET SESSION group_concat_max_len = 100000;

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #3 kdy: 27. 09. 2014, 17:09:28 »
Zkoušel jsi nastavit group_concat_max_len?  SET SESSION group_concat_max_len = 100000;
Viděl jsi alespoň z vlaku ten zdrojový kód? To co navrhuješ je na prvním řádku té funkce... Zkoušel jsem si i vypsat, zda se to v DB správně nastaví (nastavilo), takže group_concat_max_len není řešením...

Kit

Re:Existuje limit pro funkci CONCAT?
« Odpověď #4 kdy: 27. 09. 2014, 17:41:47 »
Viděl jsi alespoň z vlaku ten zdrojový kód? To co navrhuješ je na prvním řádku té funkce...

Zdrojový kód jsi neuvedl. Pouze nějaký (pro mne obtížně čitelný) screenshot. Nedá se to zkopírovat do editoru, nedá se to otestovat. Opisovat to nikdo nebude.


Re:Existuje limit pro funkci CONCAT?
« Odpověď #5 kdy: 27. 09. 2014, 17:43:49 »
Nebylo by lepší a bezpečnější ten JSON soubor vytvářet až v PHP pomocí json_encode? Navíc by to vracelo skutečný JSON a ne tuhle napodobeninu.

Lemming

Re:Existuje limit pro funkci CONCAT?
« Odpověď #6 kdy: 27. 09. 2014, 19:52:11 »
FJ: Tak nějak. Duplikovat tímhle způsobem funkcionalitu, která je dostupná v knihovně je architektonická prasárna. Navíc to ani není zduplikované pořádně, protože to escapování je dost odfláknuté - escapuje se jen to co si autor myslí, že se tam uživatelovi povede vložit z UI (pokud tam náhodou není nějaký filtr na vstup na servisní vrstvě, ale hádám, že není). Tipuju, že problém bude právěv tom, že se tam uživateli povedlo vložit nějaký znak, se kterým to "escapování" nepočítá.

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #7 kdy: 28. 09. 2014, 15:35:07 »
Nebylo by lepší a bezpečnější ten JSON soubor vytvářet až v PHP pomocí json_encode? Navíc by to vracelo skutečný JSON a ne tuhle napodobeninu.
Dotaz nezněl na to, jak to mám udělat (mám to dávno opraveno), ale jestli existuje limit... Vytvářím si to, co potřebuji a nikomu to nevnucuji. Kdyby nebyla MySQL taková sračka, tak podporuje výstup do JSONu stejně jako jiné databáze, ale to je úplně jiné téma... Držme se tématu...

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #8 kdy: 28. 09. 2014, 15:39:17 »
FJ: Tak nějak. Duplikovat tímhle způsobem funkcionalitu, která je dostupná v knihovně je architektonická prasárna. Navíc to ani není zduplikované pořádně, protože to escapování je dost odfláknuté - escapuje se jen to co si autor myslí, že se tam uživatelovi povede vložit z UI (pokud tam náhodou není nějaký filtr na vstup na servisní vrstvě, ale hádám, že není). Tipuju, že problém bude právěv tom, že se tam uživateli povedlo vložit nějaký znak, se kterým to "escapování" nepočítá.
Otázka nezněla, jak mám řešit uloení dat v JSONu, ale jestli má CONCAT nějaké limity... Bože, to je zas chytrolínů, kteří neznají odpověď, ale potřebují se projevit...
Tipuješ špatně, zajisté jsem řešil, jaká data lezou od uživatele, to byla první věc, co mě napadla... Ale vspupními daty to nebylo. Držme se tématu... Problém mám vyřešen, ptám se, zda existuje nějaký limit pro CONCAT

Re:Existuje limit pro funkci CONCAT?
« Odpověď #9 kdy: 28. 09. 2014, 15:45:18 »
Dobře, odpovím přesně na vaši otázku: ano, limit existuje.

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #10 kdy: 28. 09. 2014, 15:47:21 »
Viděl jsi alespoň z vlaku ten zdrojový kód? To co navrhuješ je na prvním řádku té funkce...

Zdrojový kód jsi neuvedl. Pouze nějaký (pro mne obtížně čitelný) screenshot. Nedá se to zkopírovat do editoru, nedá se to otestovat. Opisovat to nikdo nebude.
Proč by to měl někdo opisovat? Pokud někdo ví, zda má/nemá funkce CONCAT v MySQL nějaký limit, tak mě stačí tato informace. A pokud mě někdo poradí, ať vyzkouším nastavit nějaký parametr, který nastavuji na prvním řádku ve zobrazené funkci, tak je to odpověď o ničem.
Uvedl jsem print screen, protože upravuji kód přímo na serveru přes SSH a nechtělo se mi to stahovat. Navic je to pěkně formátované...
Pokud to potřebuješ v textové podobě, tak se jedná o toto:
Kód: [Vybrat]
CONCAT(
  GROUP_CONCAT(
    CONCAT( ... )
    CONCAT( ... )
    CONCAT( ... )
    ...
  )
)

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #11 kdy: 28. 09. 2014, 15:48:33 »
Dobře, odpovím přesně na vaši otázku: ano, limit existuje.
A mohu prosit nějaký odkaz, kde se o této problematice dočtu více?

Kit

Re:Existuje limit pro funkci CONCAT?
« Odpověď #12 kdy: 28. 09. 2014, 15:58:15 »
Uvedl jsem print screen, protože upravuji kód přímo na serveru přes SSH a nechtělo se mi to stahovat. Navic je to pěkně formátované...

Mýlíš se. Je to naformátované hnusně. Na přetahování snippetů se dá použít myš. Ctr-C a Ctrl-V snad umíš. Je to jednodušší, než screenshot.

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #13 kdy: 28. 09. 2014, 16:03:48 »
Uvedl jsem print screen, protože upravuji kód přímo na serveru přes SSH a nechtělo se mi to stahovat. Navic je to pěkně formátované...

Mýlíš se. Je to naformátované hnusně. Na přetahování snippetů se dá použít myš. Ctr-C a Ctrl-V snad umíš. Je to jednodušší, než screenshot.
Pokud si člověk otevře termínál, přihlásí se na server přes SSH, na serveru zadá příkaz mc a otevře si MC, tak nelze myší ani označovat text, ani používat ctrl-c, ctrl-v, jedná se o konzoli... Ale to člověk který ťuká neco ve MS Widlích nepochopí.
Opravdu je tak důležité řešit obrázek který s odpovědí (s dotazem) nesouvisí?

Kit

Re:Existuje limit pro funkci CONCAT?
« Odpověď #14 kdy: 28. 09. 2014, 16:23:42 »
Pokud si člověk otevře termínál, přihlásí se na server přes SSH, na serveru zadá příkaz mc a otevře si MC, tak nelze myší ani označovat text, ani používat ctrl-c, ctrl-v, jedná se o konzoli... Ale to člověk který ťuká neco ve MS Widlích nepochopí.
Opravdu je tak důležité řešit obrázek který s odpovědí (s dotazem) nesouvisí?

Opět se mýlíš. Windows nepoužívám a dokonce nepotřebuji ani "ctrl-c, ctrl-v", abych něco přetáhl z jedné konzoly do druhé. Levým myšítkem označím, postředním vložím. Ale to člověk který ťuká neco ve MS Widlích nepochopí.

Kromě obrázku jsi poslal jen dotaz na limit CONCAT. Odpověď jsi už dostal.