it-swarm.com.de

Importieren einer großen SQL-Datei phpmyadmin

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?

12
grant tailor

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 Import im GUI-Stil 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 stellen, die zu groß ist, um über PHPMYADMIN importiert zu werden. Navigieren Sie dann mit Ihrem Browser dorthin - so etwas wie 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 USERNAME -p DATABASENAME <FILENAME.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 meine Dumps und Wiederherstellungen immer so: DUMP: mysqldump -u DB_USER -h DB_Host -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz WIEDERHERSTELLEN: gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME

  • Schließlich und am schmerzhaftesten können Sie wählen, ob Sie einzelne Tabellen oder Gruppen von Tabellen in ausreichend kleine Speicherauszüge verschieben möchten. Stellen Sie dann diese einzelnen Speicherauszüge nacheinander über PHPMYADMIN wieder her.

FTP & RESTORE Anweisungen:

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

Normalerweise können Sie mit demselben Login und Passwort wie bei SSH (Sie-Kommandozeilen-Login) FTP auf Ihren Server (insbesondere einen gemeinsam genutzten Host) senden. 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-Computern). Wenn Sie nicht vorhaben, viel FTP zu betreiben, geben Sie einfach das ein, was Sie möchten. Sie können es jederzeit über die Befehlszeile verschieben.

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

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

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

Merken:

  • Die Datenbank muss bereits vorhanden sein (aber leer sein), bevor der Befehl RESTORE ausgeführt wird
  • DB_USER und DB_PASSWORD müssen vor dem Befehl RESTORE für die DB eingerichtet werden (dies können Sie auf der Registerkarte PHPMYADMIN - Berechtigungen tun).
  • Wenn Sie DB_USER über 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 in fortgeschrittenere DUMPs und RESTOREs einsteigen, möchten Sie dies möglicherweise vollständig von einem anderen Computer aus tun, was nicht schwierig ist, aber erfordert, dass ein paar weitere Informationen bereitgestellt werden und DB_USER über die entsprechenden Berechtigungen verfügt.

FTP die DB und restaurieren Sie es ... Schritt für Schritt

  1. Suchen Sie die gezippte 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 Datei-> Site Manager und klicken Sie auf die Schaltfläche Neue Site (unterer linker Quadrant der GUI). Stellen Sie den Host auf eine Domäne (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). Festlegen des Benutzers und des Kennworts (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) Wenn Sie mit dem Remote-Server verbunden sind (sollte Ihr DESTINATION-Server sein), navigieren Sie auf der linken Seite von FileZilla zu dem Verzeichnis, in dem sich die in Schritt 1 befindliche Dump-Datei befindet. (Der Pfad für den lokalen Computer befindet sich ganz links, etwa auf halber Höhe, und trägt die Bezeichnung Lokale Site: In unserem Beispiel würde das Textfeld neben Lokale Site: C:\Web\DB\Dumps lauten.)
  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, für den FileZilla geöffnet ist. Es wird wahrscheinlich standardmäßig Ihr $ HOME-Verzeichnis verwenden. Wenn Sie keinen Grund haben, den DB-Speicherauszug in einem bestimmten Verzeichnis abzulegen, z. B. für Ihre eigenen organisatorischen Zwecke, lassen Sie den Pfad auf der Remote-Site in Ruhe. Schreiben Sie diesen Pfad auf (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 Baum, der unter der in Schritt 5 gefundenen Bezeichnung Local Site: angezeigt wird. Doppelklicken Sie auf diese Datei, und FileZilla sendet 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 mydb aus dem Menü links.
  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) an. 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 (unten rechts 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 dazu einen Befehl wie - cd $HOME oder cd /usr/grant. (Auf Linux-Computern 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 Passwort ist kein Leerzeichen, da dies so sein muss, dass es kein Tippfehler ist).

Sobald dieser letzte Befehl abgeschlossen ist, wurde Ihre Datenbank wiederhergestellt. Ich empfehle nicht, den von mir angegebenen DB-Benutzer und das Kennwort zu verwenden. Ersetzen Sie sie einfach durch sicherere eigene Optionen.

DUMP und RESTORE auf verschiedenen Servern ohne FTP

Wenn Sie das FTP-Zeug ü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 oben genannten DB-, Benutzer- und Berechtigungen auf dem DESTINATION-Server
  3. Stellen Sie sicher, dass die Berechtigungen auf dem SOURCE-Server es SOURCE_DB_USER ermöglichen, remote auf die Datenbank zuzugreifen - entweder von dest.com oder von% (% - jedem und überall, wenn sie den richtigen Benutzernamen und das richtige Kennwort haben).
  4. Führen Sie auf dem DESTINATION-Server Folgendes aus: mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gz wobei source.com der SOURCE-Server ist (auf dem sich die Datenbank derzeit befindet)
  5. Führen Sie dann (auf dem DESTINATION-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. Vorsichtsmaßnahmen sind, dass ich dies bisher nur auf meinem eigenen dedizierten Ubuntu (mit Standard-LAMP) und den VPS-Servern von Dreamhost (von denen ich glaube, dass sie CentOS ausführen, aber ich könnte mich irren) getan habe.

12
gabe

Du kannst:

  • erhöhen, ansteigen memory_limit
  • erhöhen, ansteigen post_max_size
  • erhöhen, ansteigen max_execution_time
  • muss Apache nach all dem neu starten.
  • oder benutze Big Dump
3
Salman

Ist Ihre SQL-Datei komprimiert? Ich hatte dieses Problem mit einer 6 MB komprimierten SQL-Datei. Ich habe es in eine 53 MB unkomprimierte SQL-Datei dekomprimiert und es hat funktioniert. Das Entpacken der laufenden Dump-Datei muss den gesamten Speicher belegen.

1
Jeremy

wenn Ihre Datenbankgröße mehr als 128 MB beträgt, teilen Sie Ihre Datenbank in Teile auf.

Verwenden Sie die Software SQL Dump Splitter

SQL Dump Splitter ist eine 430-KB-Anwendung, mit der Sie die vollständige Aufteilung großer Datenbanken in kleinere SQL-Dateien problemlos steuern können. Mit SQL Dump Splitter können Sie:

  • Wählen Sie die Größe jedes Blocks
  • Überspringen Sie Kommentare (um die Größe der Datenbank sogar zu verringern).
  • Automatisieren Sie die Aktivität.
0
Sumit Bijvani

wenn Sie SSH-Zugriff auf Server mit MySQL haben, als Sie Datei mit MySQL-Dump an einer Stelle platzieren könnten, geben Sie MySQL-Konsole ein:

mysql -u myUser myDatabase

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

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önnen Sie tippen

source ~/mydump.sql;

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

Bei dieser Methode kümmern Sie sich nicht um PHP-Speicherbeschränkungen.

0
yas375