Der er altid andre muligheder :).
I mit tilfælde var det udelukket at bruge et dump, fordi vi også har en meget stor database (1,2 GB, når det er fjernet til det væsentlige,>250 GB på live). I stedet har jeg en masse .sql-filer, der fjerner alle poster der blev indsat ved en specifik test.
Jeg har en klasse DbHelper, der har denne funktion til at køre forespørgsler:
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();
}
Fungerer som en charme, og ikke mere overhead ved at køre testene.
Opdatering:
Hvis du beskæftiger dig med brugere og deres relaterede data, er det normalt ret nemt at målrette mod alle poster, du skal fjerne. Mest sandsynligt er brugernavnet og e-mailen unikke, og du kan bruge dem til at få brugerens id (auto-increment primær nøgle). Dette id bruges sandsynligvis i de relaterede tabeller. For eksempel som dette:
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;