#3 Nespustí se dlouhý INSERT příkaz

closed-fixed
Jakub Vrána
None
5
2009-11-06
2009-08-17
Anonymous
No

Pokud do 'SQL přikaz' zadám dlouhý INSERT příkaz (např. data z exportu z lokální databáze - cca 20kB, většina typu TEXT), nespustí se. Nespustí se ani při odeslání přes soubor. Pokud se ho pokusím spustit s ostatními příkazy, spustí se všechny příkazy před ním, ale za ním nic (včetně onoho INSERT), nenapíše se ani žádná chyba, prostě jakoby víc příkazů neexistovalo. Pokud se pokusím odeslat samotný příkaz INSERT, dostanu okamžitě chybu prohlížeče "Připojení bylo ukončeno vzdáleným serverem".

Discussion

1 2 > >> (Page 1 of 2)
  • Jakub Vrána
    Jakub Vrána
    2009-08-17

    Nedaří se mi to reprodukovat. Zkontrolujte prosím velikost konfigurační direktivy max_allowed_packet a zkuste příkaz spustit také přímo z MySQL konzole.

     
  • Jakub Vrána
    Jakub Vrána
    2009-08-17

    • assigned_to: nobody --> jakubvrana
    • status: open --> pending
     
  • max_allowed_packet = 1M
    Ten stejný příkaz lze bez problému spustit v MySQL konzoli i v phpMyAdmin.
    V Admineru ale stále nic, ani na desátý pokus v úplně jiném prohlížeči.

    Ale zjistil jsem, že tento problém přetrvává pouze u mě na lokálním serveru, na vzdáleném se příkaz normálně spustí. Nemůže jít o nějaký problém s rozdílnou verzí MySQL nebo PHP? Na lokálním serveru mám MySQL 5.1.30, kdežto na vzdáleném 5.0.51a. Na lokálním také běží PHP 5.3, na vzdáleném 5.2.10.

    Jak jsem psal o tom, že se nespustí ostatní příkazy, dokonce se ani nevykreslí zbytek stránky. Jak Adminer dojde k tomu dlouhému příkazu, prostě ukončí spojení s prohlížečem a zbytek stránky už nepošle.

     
    • status: pending --> open
     
  • Jakub Vrána
    Jakub Vrána
    2009-08-19

    • status: open --> pending
     
  • Jakub Vrána
    Jakub Vrána
    2009-08-19

    Zkuste prosím zjistit maximální délku příkazu, který se ještě provede. Třeba nás to někam navede.

     
  • Zjistil jsem, že nejde o délku příkazu, ale pokud se pokusím do sloupce datového typu TEXT vložit hodnotu, která je větší než 8kB přesně (8192 bytů) - např. více než 4096 znaků v UTF-8.

     
    • status: pending --> open
     
  • Špatně se chová např. tento sql soubor:
    http://leteckaposta.cz/572902041

    Pokud příkazy spustím pomocí nahrání souboru, provedou se příkazy do prvního INSERTU včetně, pokud příkazy do textového pole nakopíruju z notepadu, neprovede se ani ten první INSERT.

     
  • Jakub Vrána
    Jakub Vrána
    2009-08-19

    • status: open --> closed
     
1 2 > >> (Page 1 of 2)