Importieren einer großen SQL-Datei phpmyadmin

12

Ich versuche, diese SQL-Datei in phpmyadmin zu importieren und habe diese Meldung erhalten

#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 
'<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tr' at line 1

Was mache ich, um diesen Import durchzuführen?

Schneider gewähren
quelle

Antworten:

12

Angenommen, Sie können die Speichergröße nicht weiter erhöhen, dann gibt es einige Optionen.

  • Wenn Sie mit der Befehlszeile nicht vertraut sind und sich wirklich an einen GUI-Import halten möchten, können Sie BigDump ( http://www.ozerov.de/bigdump/ ) verwenden. Ich habe es einmal benutzt, aber es ist schon eine Weile her. Soweit ich mich erinnere, werden Sie eine Datei mit dem Namen bigdump.php (mit einigen Anweisungen) herunterladen und auf Ihrem Webserver in das Verzeichnis mit der MySQL-DB-Dump-Datei ablegen, die zu groß ist, um über PHPMYADMIN importiert zu werden. Navigieren Sie dann mit Ihrem Browser dorthin - etwa http://your-website.com/bigdump.php .

  • Wenn Sie mit der Befehlszeile vertraut sind und ein Linux-basiertes System verwenden, können Sie folgenden Code verwenden:

    mysql -u BENUTZERNAME -p DATENBANKNAME <DATEINAME.sql

Die Datenbank und der Benutzer (mit Berechtigungen für die Datenbank) müssen jedoch vorhanden sein, bevor dieser Befehl ausgeführt werden kann. Hinweis Ich habe den obigen Befehl aus einer anderen Quelle kopiert. Ich mache immer meine Dumps und restauriere wie folgt: DUMP: mysqldump -u DB_USER -h DB_HOST -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz RESTORE:gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME

  • Schließlich und äußerst schmerzhaft können Sie einzelne Tabellen oder Gruppen von Tabellen in ausreichend kleine Speicherauszüge verschieben. Stellen Sie dann diese einzelnen Speicherauszüge einzeln über PHPMYADMIN wieder her.

FTP & RESTORE Anleitung:

Laden Sie FileZilla hier herunter: http://filezilla-project.org/download.php?type=client

Normalerweise können Sie einen FTP-Zugang zu Ihrem Server (insbesondere zu einem gemeinsam genutzten Host) herstellen, indem Sie dasselbe Login und Passwort verwenden, das Sie für SSH verwenden würden (Sie melden sich über die Befehlszeile an). Stellen Sie einfach sicher, dass die Verbindung zu Ihrem Server in FileZilla ordnungsgemäß eingerichtet ist.

Sobald die Verbindung hergestellt ist, ist Ihr Standardpfad wahrscheinlich Ihr $ HOME-Ordner (auf nix-Rechnern). Wenn Sie nicht vorhaben, viel FTP zu betreiben, speichern Sie einfach das, was Sie möchten. Sie können es jederzeit von der Befehlszeile aus verschieben.

Wenn Sie einen MySQL-Dump per FTP in Ihren $ HOME-Ordner übertragen, lautet der RESTORE-Befehl für eine Datenbank mit dem Namen mydb und eine Datenbank-Dump-Datei mit dem Namen mydb.sql.gz (im $ HOME-Ordner):

gunzip < $HOME/mydb.sql.gz | mysql -u DB_USER -pDB_PASSWORD mydb

Hier müssten Sie natürlich die Werte für DB_USER und DB_PASSWORD auf den Benutzer und das Kennwort ändern, die Sie für den DB eingerichtet haben.

Merken:

  • Der DB muss bereits vorhanden (aber leer) sein, bevor der Befehl RESTORE ausgeführt wird
  • Der DB_USER und das DB_PASSWORD müssen vor dem Befehl RESTORE für den DB eingerichtet werden (dies kann über die Registerkarte PHPMYADMIN - Berechtigungen erfolgen).
  • Wenn Sie DB_USER in PHPMYADMIN einrichten, wird standardmäßig nur DB_USER der Zugriff auf die Datenbank von localhost (dem Server, auf dem die Datenbank gehostet wird) gestattet. Ich gehe davon aus, dass dies für Ihre Situation in Ordnung ist. Wenn Sie sich mit fortgeschritteneren DUMPs und RESTOREs befassen, möchten Sie dies möglicherweise von einem anderen Computer aus tun, der zwar nicht schwer ist, aber ein paar weitere Informationen und DB_USER mit den entsprechenden Berechtigungen erfordert.

FTPen Sie die DB und stellen Sie sie wieder her ... Schritt für Schritt

  1. Suchen Sie die komprimierte MySQL-Dump-Datei auf Ihrem Desktop (Beispiel: C: \ Web \ DB \ Dumps \ mydb.sql.zip).
  2. Laden Sie FileZilla herunter und installieren Sie es
  3. Gehen Sie in FileZilla zu File-> Site Manager und klicken Sie auf die Schaltfläche New Site (unterer linker Quadrant der GUI). Stellen Sie den Host auf eine Domain (Beispiel: dest.com) ein, die sich auf Ihrem DESTINATION-Server befindet. Stellen Sie das Protokoll auf FTP oder SFTP ein (dies hängt von Ihrem Hosting ab, fragen Sie sie). Legen Sie den Benutzer und das Kennwort fest (Beispiel: Benutzer = Erteilen, Kennwort = Erteilen des Kennworts) - Wenn das FTP-Protokoll SFTP ist, sollten alle gültigen SSH-Anmeldeinformationen funktionieren.
  4. (In FileZilla) Klicken Sie auf Verbinden (Schaltfläche ganz links unten).
  5. (In FileZilla) Sobald Sie mit dem Remote-Server verbunden sind (sollte Ihr ZIEL-Server sein), navigieren Sie über die linke Seite von FileZilla zu dem Verzeichnis, in dem sich die in Schritt 1 gespeicherte Sicherungsdatei befindet. (Der Pfad für den lokalen Computer befindet sich ganz links, etwa auf halber Strecke, und ist mit Lokaler Standort gekennzeichnet. In unserem Beispiel lautet das Textfeld neben Lokaler Standort C: \ Web \ DB \ Dumps.)
  6. (In FileZilla) Suchen Sie die Bezeichnung Remote site: direkt rechts neben Local Site :.
  7. (In FileZilla) Es gibt keinen technischen Grund, warum Sie den DB DUMP nicht in den Ordner legen können, in den FileZilla geöffnet wird. Es wird wahrscheinlich standardmäßig Ihr $ HOME-Verzeichnis sein. Wenn Sie keinen Grund haben, den DB-Dump in einem bestimmten Verzeichnis abzulegen, z. B. aus organisatorischen Gründen, lassen Sie den Pfad auf der Remote-Site in Ruhe. Notieren Sie sich diesen Pfad (Linux-Beispiel: / usr / grant).
  8. (In FileZilla) Suchen Sie die Datei auf Ihrem lokalen Computer in der linken Hälfte von FileZilla direkt unter dem unter der Bezeichnung Local site: in Schritt 5 angezeigten Baum. Doppelklicken Sie auf diese Datei, und FileZilla überträgt sie per FTP an Ihre Remote-Site.
  9. Erstellen Sie in PHPMYADMIN auf Ihrem DESTINATION-Server eine neue Datenbank (geben Sie mydb in das Textfeld Neue Datenbank erstellen ein und klicken Sie auf die Schaltfläche Erstellen).
  10. (In PHPMYADMIN) Wählen Sie links im Menü die Option mydb.
  11. (In PHPMYADMIN) Klicken Sie auf die Registerkarte Berechtigungen (oben rechts). Klicken Sie auf dieser Seite auf Neuen Benutzer hinzufügen.
  12. (In PHPMYADMIN-> Berechtigungen-> Neuen Benutzer hinzufügen) Geben Sie einen Benutzernamen (Beispiel: mydb_grant) und ein Kennwort (Beispiel: mydb_password) ein. Wählen Sie in der Dropdown-Liste Host die Option Lokal. Stellen Sie sicher, dass das Optionsfeld neben "Alle Berechtigungen für die Datenbank gewähren" ausgewählt ist. Klicken Sie dann auf Los (rechts unten auf dem Bildschirm).
  13. SSH in Ihren DESTINATION-Server.
  14. (In Ihrem SSH-Terminal) Navigieren Sie zu dem Verzeichnis, das Sie in Schritt 7 notiert haben. Verwenden Sie einen Befehl wie - cd $HOMEoder cd /usr/grant. (Auf Linux-Rechnern ist $ HOME eine Umgebungsvariable, die ungefähr / usr / grant entspricht.)
  15. (In Ihrem SSH-Terminal) Führen Sie den folgenden Befehl aus: gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb(Zwischen -p und dem Kennwort steht kein Leerzeichen, da dies der Fall sein muss und kein Tippfehler vorliegt.)

Sobald dieser letzte Befehl abgeschlossen ist, wurde Ihre DB WIEDERHERGESTELLT. Ich empfehle nicht, den DB-Benutzer und das Kennwort zu verwenden, die ich angegeben habe. Ersetzen Sie sie einfach durch Ihre eigenen, sichereren Optionen.

DUMP und RESTORE auf verschiedenen Servern ohne FTP

Wenn Sie das FTP-Material überspringen möchten und nichts dagegen haben, den DUMP zu wiederholen, können Sie dies folgendermaßen tun:

  1. Melden Sie sich beim DESTINATION-Server an (auf dem sich die Datenbank befinden soll - wir nennen sie destination.com).
  2. Erstellen Sie die DB, den Benutzer und die entsprechenden Berechtigungen wie oben erwähnt auf dem DESTINATION-Server
  3. Stellen Sie sicher, dass die Berechtigungen auf dem SOURCE-Server SOURCE_DB_USER den Remotezugriff auf die Datenbank ermöglichen - entweder Zugriff von dest.com oder von% (% - alle und überall, wenn sie den richtigen Benutzernamen und das richtige Kennwort haben).
  4. Führen Sie auf dem Server DESTINATION Folgendes aus: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gzDabei ist source.com der SOURCE-Server (auf dem sich die Datenbank derzeit befindet).
  5. Führen Sie dann (auf dem ZIEL-Server) Folgendes aus: gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb

Das sollte alles sein, was Sie tun müssen, um die Datenbank von einem Server auf einen anderen zu verschieben. Die Einschränkung besteht darin, dass ich dies bisher nur auf meinem eigenen dedizierten Ubuntu (mit Standard-LAMP) und auf Dreamhosts VPS-Servern (von denen ich glaube, dass sie CentOS ausführen, aber ich könnte mich irren) getan habe.


quelle
3

Du kannst:

  • erhöhen, ansteigen memory_limit
  • erhöhen, ansteigen post_max_size
  • erhöhen, ansteigen max_execution_time
  • muss Apache danach neu starten.
  • oder benutze Big Dump
Salman
quelle
1

Ist Ihre SQL-Datei komprimiert? Ich hatte dieses Problem mit einer 6MB gezippten SQL-Datei. Ich habe es in eine 53MB unkomprimierte SQL-Datei dekomprimiert und es hat funktioniert. Das Entpacken der Dump-Datei während des Vorgangs muss den gesamten Speicher verbrauchen.

Jeremy
quelle
0

Wenn Sie SSH-Zugriff auf Server mit MySQL haben, als Sie Datei mit MySQL-Dump an einem Ort platzieren könnten, geben Sie MySQL-Konsole:

mysql -u myUser myDatabase

Oder wenn sich der MySQL-Server an einem anderen Ort als localhost befindet und Verbindungen nicht nur von localhost aus zulässt als:

mysql -u myUser -h mysql.example.com myDatabase

Dann werden Sie nach dem Passwort für Ihren MySQL-Benutzer gefragt. Jetzt bist du in der MySQL-Konsole. Hier könnte man tippen

source ~/mydump.sql;

Sie werden sehen, wie Befehle von Ihrem Dump ausgeführt werden.

Bei dieser Methode kümmern Sie sich nicht um die Grenzen des PHP-Speichers.


quelle
0

Wenn Ihre Datenbank größer als 128 MB ist, teilen Sie Ihre Datenbank in Teile auf.

Verwenden Sie die SQL Dump Splitter- Software

SQL Dump Splitter ist eine 430-KB-Anwendung, die die vollständige Kontrolle über die einfache Aufteilung großer Datenbanken in kleinere SQL-Dateien ermöglicht. Mit SQL Dump Splitter können Sie:

  • Wählen Sie die Größe jedes Blocks
  • Kommentare überspringen (um die Größe der Datenbank zu reduzieren)
  • Automatisieren Sie die Aktivität.

quelle
Wie automatisieren Sie die Aktivität? Ich benutze den Splitter und habe keine Ahnung, wie er funktioniert ... er hat den Split abgeschlossen, ohne mir mitzuteilen, in welche Blöcke er die Datei aufteilt, und jetzt gibt es keine Hilfe oder FAQ, die bei der Verwendung helfen.