Zu große SQL-Datenbanken in XAMPP importieren
Mit phpMyAdmin ist das Exportieren und Importieren von Datenbanken relativ einfach, es sei denn, die Datenbank ist z.B. 1 GB groß.
Die Standard Größenbeschränkungen bei Datenbanken sind relativ niedrig angesetzt. Die Grenze ist schneller erreicht als gedacht und schon bockt phpMyAdmin. Gemeiner Weise spuckt es nicht einmal zwangsweise eine nachvollziehbare Fehlermeldung aus, die darauf schließen lässt, dass die zu importierende Datenbank zu groß ist.
- Den „Konfiguration“-Button des XAMPP-Kotrollpanels des SQL-Servers klicken und
my.ini
auswählen - In der Datei nach
myisam_sort_buffer_size = 8M
suchen und den Wert von 8 MB soweit erhöhen, dass er größer als die zu importierende Datenbank ist. Hier kann man z.B. auchG
für Gigabyte verwenden. Danach speichern. - Im Kontrollpanel den SQL-Server stoppen und neustarten.
- In phpMyAdmin jetzt die Datenbank importieren (und nicht schockiert sein, weil erneut die Fehlermeldung ausgespielt wird).
- Die Shell öffnen (Bei Windows 10 kann man z.B. in das Textfeld von Cortana dazu einfach
cmd
eingeben.) - Die Datenbanken bei XAMPP befinden sich in der Regel im Verzeichnis C:\xampp\mysql\bin, in der Shell ruft man das Verzeichnis mit folgendem Befehl auf:
cd C:\xampp\mysql\bin
- Der Einfachheit halber sollte man einfach auch die zu importierende Datenbank dort ablegen.
- Ab hier weiche ich ein wenig vom obigen Video ab!
- Folgenden Befehl eingeben:
mysql -u root -p db_name < db_name_2.sql
Nach dem-u
folgt der Benutzername, bei XAMPP lautet dieser i. d. R. schlichtroot
, nach-p
folgt der Name der Datenbank in die die Daten importiert werden sollen, das < ist der Parameter für Import (> wäre dementsprechend für den Export) der Datenbank, die in diesem Beispieldb_name_2.sql
heißt (Die Dateiendung darf hier nicht fehlen!) - Nachdem man auf Enter gedrückt hat, wird das Passwort der Datenbank abgefragt, in die die Daten importiert werden sollen. Bei XAMPP ist das ein wenig fies, weil es nämlich standardmäßig kein Passwort gibt. Also einfach auf noch einmal auf Enter drücken.
- Der Import läuft jetzt und man kann ihn quasi live in phpMyAdmin mit verfolgen.
So einfach geht das … natürlich nicht! Der Import läuft jetzt zwar, aber wenn die Datenbank besonders groß ist, muss man damit rechnen, dass es auch einzelne Bestandteile sind. Ist das der Fall, bricht der Import ab und zeigt in der Shell die Fehlermeldung an:
Bei ERROR 1118
ist etwa ein Element in der Datenbank länger als die erlaubte Zeilenlänge, in der my.ini
kann hierfür der Wert für innodb_page_size
angepasst werden. Nicht unwahrscheinlich ist auch ERROR 2006
, ein Hinweis darauf, das ein einzelnes Element an sich zu groß war, um verarbeitet zu werden. Hier kann man die maximale Größe eines Einzelpakets unter max_allowed_packet
anpassen und die Zeitspanne des Imports unter wait_timeout
verlängern – letzterer wird in Sekunden angeben.