Es gibt immer andere Möglichkeiten :).
In meinem Fall kam die Verwendung eines Dumps nicht in Frage, da wir auch eine sehr große Datenbank haben (1,2 GB, wenn auf das Wesentliche reduziert,> 250 GB im Livemodus). Stattdessen habe ich eine Reihe von .sql-Dateien, die alle Datensätze entfernen die durch einen bestimmten Test eingefügt wurden.
Ich habe eine Klasse DbHelper, die diese Funktion zum Ausführen von Abfragen hat:
public function executeOnDatabase($path_to_sql_file)
{
$sql = file_get_contents($path_to_sql_file);
$dbh = $this->getModule('Db')->dbh;
$this->debugSection('Query', $sql);
$sth = $dbh->prepare($sql);
return $sth->execute();
}
Funktioniert wie ein Zauber und kein Overhead mehr für das Ausführen der Tests.
Aktualisierung:
Wenn Sie mit Benutzern und ihren zugehörigen Daten zu tun haben, ist es normalerweise ziemlich einfach, alle zu entfernenden Datensätze gezielt zu entfernen. Höchstwahrscheinlich sind der Benutzername und die E-Mail-Adresse eindeutig, und Sie können diese verwenden, um die ID (Primärschlüssel mit automatischer Erhöhung) des Benutzers abzurufen. Diese ID wird wahrscheinlich in den verwandten Tabellen verwendet. Zum Beispiel so:
SET @user_id = (SELECT `id` FROM `users` WHERE `username` = 'rgsfdg');
SET @email = '[email protected]';
DELETE FROM `mail_queue` WHERE `send_to` = @email;
DELETE FROM `user_settings` WHERE `user_id` = @user_id;
DELETE FROM `users` WHERE `id` = @user_id;