Autor | Zpráva | ||
---|---|---|---|
Tomanuel Profil * |
#1 · Zasláno: 5. 4. 2011, 01:13:55
Ahoj, mám tento dotaz:
SELECT nazev, idmenu, menu_has_texty.texty_idtexty FROM menu LEFT JOIN menunazev on menunazev.menu_idmenu = menu.idmenu LEFT JOIN menu_has_texty on menu.idmenu = menu_has_texty.menu_idmenu and menu_has_texty.texty_idtexty = ".$_GET["idproduktu"]." Vše šlape funguje dokud se tabulka "menu_has_texty" nenaplní více jak 150 hodnotami, poté hlasí chybu Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Nemáte s tím někdo prosím zkušenosti? nevíte co s tím? Děkuji za odpověd |
||
Joker Profil |
#2 · Zasláno: 5. 4. 2011, 07:59:50
Co říká mysql_error?
|
||
Tomanuel Profil * |
#3 · Zasláno: 5. 4. 2011, 11:22:51
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ..... Tohle nebo teď přesně nechápu. |
||
Tori Profil |
#4 · Zasláno: 5. 4. 2011, 11:24:58 · Upravil/a: Tori
Tomanuel:
mysql_query("...ten váš dotaz s LEFT JOINem.."); echo "Chyba: ".mysql_error(); |
||
Tomanuel Profil * |
#5 · Zasláno: 5. 4. 2011, 11:28:29
Chyba: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
|
||
Joker Profil |
#6 · Zasláno: 5. 4. 2011, 11:45:57
Tomanuel:
Kolik tak řádků mají tabulky menu, menunazev a menu_has_texty? Mimochodem k tomu varování (warning), mysql_result může vrátit resource nebo false v případě chyby. Čili s tím druhým případem je dobré počítat a nějak ho řešit. |
||
Tomanuel Profil * |
#7 · Zasláno: 5. 4. 2011, 11:52:55
Koukám že jste tady už danou situaci s někým řešil.
http://diskuse.jakpsatweb.cz/?action=vthread&topic=76382&forum=28&page=-1 menu - 72 záznamů menunazev - 72 záznamů menu_has_texty - momentálně 420 |
||
Joker Profil |
#8 · Zasláno: 5. 4. 2011, 12:04:07 · Upravil/a: Joker
Tomanuel:
„Koukám že jste tady už danou situaci s někým řešil.“ Ale tam byl problém, že se dělal kartézský součin těch tabulek. Vzhledem k: „Vše šlape funguje dokud se tabulka "menu_has_texty" nenaplní více jak 150 hodnotami, poté hlasí chybu“ tady bude asi podobný problém, ale ne tak zjevný. Druhá možnost je, že server má prostě příliš nízko to MAX_JOIN_SIZE. Ještě, jak vypadá ten konkrétní už sestavený dotaz, který se v tu chvíli posílá? Tj. přesně to co už jde do databáze? Dodatek: taky můžete zjistit, kolik je MAX_JOIN_SIZE. Buď u hostingu, nebo: show global variables like 'max_join_size' |
||
Tomanuel Profil * |
#9 · Zasláno: 5. 4. 2011, 12:39:09
jestli to vypisuji správně
$vysl=mysql_query("show global variables like 'max_join_size'"); echo $vysl; tak výsledek je toto. Resource id #8 Jinak přesný dotaz je tento: (skoro stejný jako nahoře) mysql_query(" SELECT idmenu,nazev, menu_has_texty.texty_idtexty FROM menu LEFT JOIN menu_has_texty on menu.idmenu = menu_has_texty.menu_idmenu and menu_has_texty.texty_idtexty = ".$_GET["idproduktu"]." LEFT JOIN menunazev on menunazev.menu_idmenu = menu.idmenu WHERE idnadrazen = 0 GROUP BY idmenu "); |
||
Tomanuel Profil * |
#10 · Zasláno: 5. 4. 2011, 13:00:41
Tak se mi to nejspíš podařilo vyřešit.
stačilo dát před dotaz mysql_query('SET OPTION SQL_BIG_SELECTS=1'); a začalo to šlapat. Uvidíme co se stane až se časem tabulka naplní o trošku víc. Ale díky za pomoc při řešení. |
||
Časová prodleva: 13 let
|
0