[phpmyadmin] Grote sql query uitvoeren

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008

  • YscO
  • Registratie: April 2002
  • Laatst online: 20-04 20:36
Ik zit met het volgende probleem. Ik heb een backup van mijn database van het phpBB forum. Deze backup is ruim 40MB aan tekst. Indien ik het bij mijn hoster upload via het query scherm in phpmyadmin, gebeurd er helemaal niets. Iemand kwam met het advies om DBmanager te gebruiken. Deze loopt locaal alleen ook vast en remote kan ik niet connecten (daarvoor moet je betalen).

Enkel wordpad en firefox kunnen het bestand goed openen. De rest loopt er meteen op vast. Wat is de beste oplossing om deze sql query in mijn database te krijgen?

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-04 22:00
Waarom phpmyadmin het 'niet doet'? Omdat 1) het te lang kan duren en php ermee ophoudt (timeout), 2) de upload-maximum aantal kwa megabytes te klein is, 3) het maximale toegestane geheugen gebruik per script is bereikt.

Wat je zou kunnen doen is 1) je back-up is mootjes hakken en mootje per mootje via phpmyadmin invoeren, 2) via de commandline invoeren (moet wel toegang voor hebben, bij de meeste hosters heb je dat niet), 3) jouw hoster vragen of ze jouw backup in willen voeren.

Verwijderd

heb je geen FTP en SSH toegang? Dan upload je de query met FTP en met SSH Voer je hem uit...
via de mysql console

Verwijderd

SSH toegang heb je meestal niet. Het in stukjes verdelen lukt meestal wel. Of even aan je host vragen of zij het doen. Wel jammer dat phpMyAdmin hier niet wat betere ondersteuning voor heeft.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 21-04 13:13
Bestandje uploaden samen met onderstaand PHP-scriptje. Die voert hem query voor query uit. Onlangs snel ff in elkaar geplakt toen ik met een vergelijkbaar probleem zat;

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$fp = fopen("database.sql", 'r');
$query = "";

while(!feof($fp)) {
    $line = trim(fgets($fp, 1234567));
    if(!empty($line) && substr($line, 0, 2) != "--") {
        $query .= $line;
        if(substr($line, -1) == ";") {
            mysql_query($query);
            $query = "";
        }   
    }
}


@CiPHER (naamgenoot :P)
Het is niet zozeer een probleem van phpMyAdmin, maar een probleem dat je een bestand van 20MB probeerd te uploaden. OVer het algemeen staat de maximale upload-grootte op 2MB

[ Voor 25% gewijzigd door frickY op 16-12-2005 09:57 ]


  • YscO
  • Registratie: April 2002
  • Laatst online: 20-04 20:36
Ik heb geen SSH toegang en zal het scriptje van frickY is even uitvoeren.

[ Voor 9% gewijzigd door YscO op 16-12-2005 10:00 ]


Verwijderd

frickY schreef op vrijdag 16 december 2005 @ 09:56:
@CiPHER (naamgenoot :P)
Het is niet zozeer een probleem van phpMyAdmin, maar een probleem dat je een bestand van 20MB probeerd te uploaden. OVer het algemeen staat de maximale upload-grootte op 2MB
Voor mijn eigen server ook een export-dump proberen te importeren met phpMyAdmin. File upload staat op 200MB, genoeg voor mijn dump van 40MB. Server heeft ook 0.00 loadaverage. Toch faalt de import, ik krijg een vage SQL error: terwijl bij het opdelen ik geen error krijgt. Wellicht een bug in phpMyAdmin, maar ook duurt het eeuwen eer phpMyAdmin iets gaat doen, ook na het uploaden!

Doe ik het lokaal, via mysql client, dan is het zo gebeurd. Ik kan alleen maar concluderen dat phpMyAdmin niet zo efficient met het uitvoeren van grote SQL queries (dumps) omgaat.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 21-04 13:13
Geen (netwerk-)timeout dan?
Het kan natuurlijk best een foutje met phpMyAdmin zijn. Zo hebben ze wel meer rare dingen (backticks in de xports, labels welke de verkeerde radiobutton triggeren, etc(.

@YscO
Laat maar even weten of je er wat aan hebt

[ Voor 14% gewijzigd door frickY op 16-12-2005 10:22 ]


  • Arto
  • Registratie: November 2005
  • Laatst online: 16-04 19:13
Doe ik het lokaal, via mysql client, dan is het zo gebeurd. Ik kan alleen maar concluderen dat phpMyAdmin niet zo efficient met het uitvoeren van grote SQL queries (dumps) omgaat.
phpMyAdmin is ook voor et beheren en voor et makelijk importeren van query's, en altijd handig als je een fout in j equery heb kun je daar makelijker zien waar de fout zit. Maar juist omdat phpMyAdmin controleert of er een fout in de code zit geeft het een probleem. hij laad eerst de SQL in (fopen denk ik?) en daarna gaat ie allerlei controles erop uitvoeren, reken maar dat dat op 40 mb niet leuk is.

  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Misschien werkt dat stukje code al, maar als het niet werkt dan is misschien het scriptje BigDump een optie. Dat heb ik eens gebruikt om een database dump te importeren zonder shell access en timeout problemen e.d. en dat werkte prima.

System specs - Ik word blij van knipperende lichtjes.


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
http://www.mysql.com/products/tools/administrator/

Waarom gebruik je niet zoiets dan? Werkte bij mij

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-04 15:11

Bosmonster

*zucht*

MySQL heeft ook een maximum dat ie aan kan voor een query (standaard maar 1 MB ofzo), dus als het een samengestelde insert betreft kan dat ook problemen opleveren.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-04 15:11

Bosmonster

*zucht*

Omdat je meestal geen externe toegang hebt tot de database.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Goed, support op phpMyAdmin geven we hier niet, daarvoor moet je op phpMyAdmin.net zijn. Wat hier andere oplossingen voor kunnen zijn kun je hierboven ook lezen, maar aangezien je daar ook prima zelf op had moeten komen, en bovendien al deze oplossingen weinig tot niets met programmeren te maken hebben, doe ik dit topic op slot. Met de gegeven tips moet je er verder uit kunnen komen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.