Mysqldump mit >12 MB SQL Datei

Hi zusammen.

Ich versuche über exec() einen MysqlDump auszuführen. Dieser soll SQL-Statements in die DB importieren.

Hier meine Versuche:

exec("mysql --host='localhost' --user='username' --password='passwort' dbname 

Er importiert mir brav einiges aus dem importSQLFile.sql jedoch nicht alles.

Der dump hat 3 Tabellen mit knapp 20000 Datensätze, er legt aber nur eine Tabelle mit knapp 14000 Datensätze an.

Gibts für den dump eine Beschränkung?

Wenn ich die SQL-Datie direkt über phpmyadmin importiere, klappts, deshalb bin ich wirklich ratlos.

Bitte um Hilfe.

Gruß,
Sebastian

Hallo Sebastian,

Ich versuche über exec() einen MysqlDump auszuführen. Dieser
soll SQL-Statements in die DB importieren.

Der dump hat 3 Tabellen mit knapp 20000 Datensätze, er legt
aber nur eine Tabelle mit knapp 14000 Datensätze an.
Gibts für den dump eine Beschränkung?

Es gibt verschiedene, zeitliche Beschränkungen. Apache hat eine:
http://httpd.apache.org/docs/2.2/mod/core.html#timeout
und für PHP gibt es in der php.ini auch eine: max_execution_time = X
http://www.php-resource.de/handbuch/ref.info.htm

Welche davon für den unvollständigen dump verantwortlich ist, lässt sich von hier schlecht sagen, meist dürfte es aber max_execution_time von php.ini sein. Eine Möglichkeit wäre, die Datendatei in kleinere Häppchen zu splitten.
MySQLDumper ist ein gutes Werkzeug, um diese Schwierigkeiten zu umgehen:
http://www.mysqldumper.de/

Viele Grüße
Marvin

Hi Marvin!

Es gibt verschiedene, zeitliche Beschränkungen. Apache hat
eine:
http://httpd.apache.org/docs/2.2/mod/core.html#timeout
und für PHP gibt es in der php.ini auch eine:
max_execution_time = X
http://www.php-resource.de/handbuch/ref.info.htm

Welche davon für den unvollständigen dump verantwortlich ist,
lässt sich von hier schlecht sagen, meist dürfte es aber
max_execution_time von php.ini sein. Eine Möglichkeit wäre,
die Datendatei in kleinere Häppchen zu splitten.
MySQLDumper ist ein gutes Werkzeug, um diese Schwierigkeiten
zu umgehen:
http://www.mysqldumper.de/

Irgendwie kann ich mir das mit dem max_execution_time nicht vorstellen. Denn müsste hier nicht eine Fehlermeldung kommen?

Hatte das mal erreicht mit dem execution_time…

Das Script läuft durch, bis zum Ende ohne irgendwelche Fehlermeldung!!

Das mit dem splitten habe ich mich auch schon gedacht, nur, wird die Tabelle mit 15000 Datensätze auch nicht angelegt!

Gruß,
Sebastian

Hallo Sebastian,

Irgendwie kann ich mir das mit dem max_execution_time nicht
vorstellen. Denn müsste hier nicht eine Fehlermeldung kommen?

Was soll ich sagen, sollte und müsste… klar, eigentlich würde ich auch denken, daß da eine Fehlermeldung kommen sollte. Aber ich habe ja betont:

Welche davon für den unvollständigen dump verantwortlich ist,
lässt sich von hier schlecht sagen,

Es gibt auf jeden Fall mindestens diese zwei zeitlichen Begrenzungen und da liegt es nahe, zuerst daran zu denken.

Das mit dem splitten habe ich mich auch schon gedacht, nur,
wird die Tabelle mit 15000 Datensätze auch nicht angelegt!

Mehr kann ich im Moment dazu auch nicht sagen. Vielleicht sind 15000 Datensätze auch noch zuviel, wer weiss. Es muss ja nicht unbedingt die Anzahl der Datensätze allen entscheidend sein, wichtig ist ja auch die Größe jedes einzelnen Datensatzes.
Ich weiss nur, daß ich genau dieses Problem auch hatte, Befüllen einer MySQL-Datenbank mit zahlreichen Datensätzen. Zu Hause lief es prima, und beim Hochladen auf die Provider-DB war immer bei ca. 75% Schluss. Lange rumprobiert, bis ich dann MySQLDumper benutzt habe und siehe da, nie wieder solche Probleme. Ich bestehe ja auch nicht auf diesem Programm, wenn Du nach deinem Problem googelst, findest Du zahlreiche andere, die das Problem auf die eine (Aufsplitten) oder die andere (Zeit beachten) Weise beheben.

und wenn jemand eine andere Erklärung dafür hat, immerzu, warum nicht…

Viele Grüße
Marvin

Hallo,

benutze mal statt exec den befehl system.

exec gibt keinerlei fehlermeldungen zurück.

Gruß

Hallo,

benutze mal statt exec den befehl system.

exec gibt keinerlei fehlermeldungen zurück.

huch, sag sowas nciht
http://de.php.net/manual/de/function.exec.php
… [, array $ausgabe [, int $return_var]]

im schlimmsten fall muss man beim jeweiligen kommando noch stderr nach stdout umleiten…

hast recht,
trotzdem bekommt er im geposteten script keine Rückgabewerte angezeigt.
d.h. system,
er kann natürlich auch das exec mit ausgabe array starten und dann das array anzeigen lassen.
bleibt jedem selbst überlassen.

Gruß