Selalu ada pilihan lain :).
Dalam kasus saya, menggunakan dump tidak mungkin karena kami juga memiliki database yang sangat besar (1,2 GB ketika dipreteli ke yang penting,> 250GB saat siaran langsung). Sebaliknya, saya memiliki banyak file .sql yang menghapus catatan apa pun yang dimasukkan oleh tes tertentu.
Saya memiliki kelas DbHelper yang memiliki fungsi ini untuk menjalankan kueri:
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();
}
Berfungsi sebagai pesona, dan tidak ada lagi biaya tambahan untuk menjalankan pengujian.
Pembaruan:
Jika Anda berurusan dengan pengguna dan data terkait mereka, biasanya cukup mudah untuk menargetkan semua catatan yang perlu Anda hapus. Kemungkinan besar nama pengguna dan email unik, dan Anda dapat menggunakannya untuk mendapatkan id (kunci utama kenaikan otomatis) pengguna. Id tersebut kemungkinan besar digunakan dalam tabel terkait. Misalnya seperti ini:
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;