Autor | Zpráva | ||
---|---|---|---|
Filip111 Profil |
#1 · Zasláno: 16. 4. 2010, 23:59:10
Ahoj,
potřebuji mít v DB nějaká binární data a protože jsou větší než 1MB, v první řadě selže insert do DB (1MB je standardně limit pro velikost SQL dotazu). Napadlo mě u většího souboru ho projet v cyklu pomocí fread a zpracovávat třeba jen po 500kB...napoprvé udělat do DB standarní insert t, zjistit LAST_INSERT_ID a pak dělat update s tím, že bych přidával po dalších 500kB. To bohužel nefunguje "update att set ccc = ccc + '".mysql_escape_string($part)."' where id=3" Nevíte, zda lze vůbec něco jako přičítání nebo přidávání dat do blobu dělat? Díky, Filip (nešťourejte prosím proč to ukládám do DB...jo a LOAD_FILE jsem už zkoušel ale to mi na win nefunguje vůbec) |
||
Kajman_ Profil * |
#2 · Zasláno: 17. 4. 2010, 00:13:22
stringy se nespojují díky + ale funkcí concat.
|
||
Filip111 Profil |
#3 · Zasláno: 17. 4. 2010, 12:23:50
pravda...to mě mohlo napadnout :(
Každopádně jsem neuspěl - parametr max_allowed_packet se netýká jen samotné velikosti SQL dotazu, ale i objemu dat se kterým se pracuje. "update att set ccc = concat(ccc, '".mysql_escape_string($part)."') where id=3" Pokud tedy concat vrátí výsledek větší než 1MB (což je standardní hodnota max_allowed_packet), stejně to skončí chybou (resp. do blobu se uloží null). LOAD_FILE není žádná spása - platí pro něj úplně stejný limity. Ve výsledku to tedy vypadá, že do jednoho pole nelze uložit nikdy větší hodnota než max_allowed_packet...přes to prostě nejede vlak. Na lokálu jsem změnil nastavení MySQL a bylo to v pořádku, na hostingu s tím ale asi počítat nelze. Jestli máte někdo nápad jak to obejít, sem s ním. |
||
Časová prodleva: 14 let
|
0