Stránka 1 z 2
MySQL - Max_allowed_packet nastavení
Napsal: 23 čer 2014 23:27
od Dosero
Dobrý večer,
moc bych byl vděčný za radu od kohokoliv, kdo se vyzná v php a mysql.
Mám zakoupený balíček doména + hosting + MySQL databáze u společnosti Forpsi. Narazil jsem na problém, který mi nedovoluje odeslat na databázi přes INSERT jakýkoliv větší text. Menší (počet znaků) se odesílá bez problémů. V databázi mám sloupec označený jako longtext, takže s tím by problém být neměl. Na internetu jsem našel, že je to v nastavení max_allowed_packet. Musí se zvětšit hodnota. V phpmyadmin je pouze 67 108 864. Problém je, že zde ta hodnota změnit nelze - je pouze informativní.
Prosím, kde můžu najít nějaký konfigurační soubor k mysql, popřípadě co tam mám napsat, aby se to zvětšilo. Prohledával jsem ty složky, ale všude je omezený přístup nebo je ta složka prázdná. Popřípadě, jestli ho musím nějak založit? V tomhle se opravdu nevyznám.
Moc děkuji za odpovědi
Re: MySQL - Max_allowed_packet nastavení
Napsal: 24 čer 2014 01:04
od Genome
Především nerozumím podstatě, o kterou se snažíš, ale to asi není až tak podstatné. Alespoň by to mohlo být zajímavé. Upřímně pochybuji, že by někdo dovolil jen tak měnit nastavení v plném rozsahu MySQL, PHP nebo Apache samotného pro program webhosting. Není k tomu důvod a to se dělá až u opravdu specifických případů a používají se VPSka, kde si klient může nastavit vše potřebné. Jaké jsou omezení a možnosti sdělí podpora Forpsi.
Re: MySQL - Max_allowed_packet nastavení
Napsal: 24 čer 2014 07:52
od Dosero
Dobře, upřesním svůj problém.
Příklad: Odesílání textu z formuláře do databáze funguje v případě, že má text například 10 000 znaků, jakmile má ovšem text třeba 12 000 znaků obsah formuláře se neodešle. Sloupec do kterého se to ukládá je nastaven na longtext. Kdyby tam na text nebylo místo - uložila by se alespoň část na kterou místo je. Na internetu jsem našel, že je to v nastavení komunikace mezi serverem a mysql (max_allowed_packet) který nastavuje, kolik se toho muže do db odeslat najednou. Určitě vím, že to změnit jde, ale nevím jak? Vše běží na tom forpsi pod linuxem.
Re: MySQL - Max_allowed_packet nastavení
Napsal: 24 čer 2014 10:29
od CZechBoY
Co tam sakra odesíláš?! 67MB ti musíš stačit, ikdybys posílal celou knihu jednim sql dotazem.
Zkus tam hodit medium text nebo něco menšího. Možná bude problém v tom datovém typu.
To nastavení nezměníš, máš hosting a tam nic měnit nemůžeš.
Re: MySQL - Max_allowed_packet nastavení
Napsal: 24 čer 2014 10:44
od Dosero
Dobře zkusím a dám vědět.

--- Doplnění předchozího příspěvku (24 Čer 2014 11:43) ---
Tak změna na mediumtext nepomohla. Jinak posílá se normální text... respektive html kód... -> Zkoumám to konkrétněji a vidím tu hranici něco kolem 60 řádků. Jakmile to má pod 60 je to úspěšné, jakmile více - nahlásí to úspěch, ale data se neaktualizují.
Re: MySQL - Max_allowed_packet nastavení
Napsal: 24 čer 2014 15:07
od CZechBoY
To je fakt divný...
Když ten stejnej text (co nejde) vložíš přes phpmyadmin tak to jde?
Re: MySQL - Max_allowed_packet nastavení
Napsal: 24 čer 2014 16:32
od Dosero
Jojo v myadminu to jde. Právě proto jsem si myslel, že je to problém v nastavení velikosti odesílaných dat.

Re: MySQL - Max_allowed_packet nastavení
Napsal: 26 čer 2014 12:30
od CZechBoY
Pokud v adminu to jde tak je problém v příkazu, který posíláš.
Pošli sem aspoň php verzi toho co posíláš.
Re: MySQL - Max_allowed_packet nastavení
Napsal: 26 čer 2014 12:44
od Dosero
Pošlu kód updatu, protože ten mě trápí víc. S vkládáním bych to snad ještě nějak obešel, ale ten update je problém...
Kód: Vybrat vše
if(isset($_POST['body'])){
mysql_query("UPDATE `Stranky` SET `nadpis` = '$_POST[nadpis]', `body` = '$_POST[body]' WHERE `nazev` = '$name'");
mysql_query($sql);
}
Re: MySQL - Max_allowed_packet nastavení
Napsal: 26 čer 2014 12:47
od CZechBoY
To je nějaký celý divný...
Kód: Vybrat vše
if(!empty($_POST['body'])){
mysql_query("UPDATE `Stranky` SET `nadpis` = '" . mysql_real_escape_string($_POST['nadpis']) . "', `body` = '" . mysql_real_escape_string($_POST['body']) . "' WHERE `nazev` = '$name'");
}
Takhle by to mělo být OK.
Re: MySQL - Max_allowed_packet nastavení
Napsal: 26 čer 2014 12:48
od Dosero
Děkuju, zkusím

--- Doplnění předchozího příspěvku (26 Čer 2014 12:57) ---
Hluboce se skláním a děkuji!!

Funguje to krásně

A pro ten INSERT, který mám takto, to bude podobně?
Kód: Vybrat vše
$sql = "INSERT INTO Stranky (`id`, `nazev`, `nadpis`, `body`) VALUES ('', '$_POST[nazev]' , '$_POST[nadpis]' , '$_POST[body]')";
Re: MySQL - Max_allowed_packet nastavení Vyřešeno
Napsal: 26 čer 2014 17:53
od CZechBoY
Jojo, chce to spojovat stringy a ne to tam cpát takhle nějak zvláštně...
Kód: Vybrat vše
$sql = "INSERT INTO Stranky (`nazev`, `nadpis`, `body`) VALUES ('" . mysql_real_escape_string($_POST['nazev']) . "' , '" . mysql_real_escape_string($_POST['nadpis']) . "' , '" . mysql_real_escape_string($_POST['body']) . "')";