Ich will über PHPMyAdmin in einer bei einem Webhoster liegenden Datenbank Daten löschen - z.B. alles älter als Timestamp X Ich kann nicht von extern auf die Datenbank zugreifen, nur über ein vom Provider zur Verfügung gestelltes PHPMyAdmin oder eben über dort gehostete eigene Programme Eigentlich wäre es ganz einfach: DELETE FROM `data` WHERE `timestamp` < 1546297200 Leider erhalte ich aber nach einigen Sekunden ein Timeout - der Hoster lässt wohl soclhe großen Datenmengen nicht zu Wie kann man das umgehen? Datenbank herunter laden, lokal bearbeiten, wieder hoch laden? Datenbank ist ca. 1 GB groß Viele Grüße Heinz
Normalerweise ist das Timeout nur eine Laufzeitüberschreitung des PHP-Scipts. Der MySQL-Server müsste die Operation trotzdem komplett ausführen, nur daß Du dann keine Rückmeldung mehr erhältst (weil die HTTP(S)-Verbindung nicht mehr steht).
Ben B. schrieb: > Normalerweise ist das Timeout nur eine Laufzeitüberschreitung des > PHP-Scipts. Der MySQL-Server müsste die Operation trotzdem komplett > ausführen, Tut er leider nicht - #2006 - MySQL server has gone away Ich sehe an den Datensätzen, das es auch nicht weniger geworden sind - hatte gehofft es werden wenigstens ein paar gelöscht, und ich muss halt das Ganze mehrfach ausführen Hmmm schrieb: > Mit einem Index auf timestamp sollte es schneller gehen. Verstehe ich zugegeben nicht, was muss ich da machen? Das Problem ist wohl das Webhoster - zumindest meiner - das wait_timeout auf 60 gesetzt haben Kann ich da überhaupt was machen? Mein nächster Versuch wäre jetzt, Adminer auf meinem Webspace zu installieren? https://www.adminer.org/de/ Die Datenbank hat momentan ca. 12 Mio Einträge, mir würde es reichen ca. 3 Mio am Anfang zu löschen Kennt jemand z.B. den PHP-Befehl um die ersten 100.000 zu löschen? Vielleicht geht es ja dann schneller, wenn ich das dann einfach 30 mal ausführe?
Hänge mal ein „LIMIT 100000“ an und führe das ganze so oft aus wie nötig.
:
Bearbeitet durch Admin
Hallo Andreas, vielen Dank, so hat es jetzt funktioniert, die Werte sind weg :-) Viele Grüße
Heinz R. schrieb: > Hmmm schrieb: >> Mit einem Index auf timestamp sollte es schneller gehen. > > Verstehe ich zugegeben nicht, was muss ich da machen? Mit einem Index sagst Du quasi der Datenbank, dass sie Zugriffe auf bestimmte Spalten optimieren soll, damit bei einem WHERE nicht die gesamte Tabelle von vorne bis hinten gelesen werden muss. Spontan dazu gefunden, ohne es inhaltlich geprüft zu haben: https://www.php-einfach.de/mysql-tutorial/optimierung-von-mysql-verwendung-des-index/ Wenn Du Pech hast, dauert allerdings die Index-Erstellung bei der vorhandenen Datenbank auch wieder so lange, dass Du am Zeitlimit scheiterst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.