हमेशा अन्य विकल्प होते हैं :)।
मेरे मामले में, डंप का उपयोग करना सवाल से बाहर था क्योंकि हमारे पास एक बहुत बड़ा डेटाबेस भी है (1.2 जीबी जब आवश्यक हो,> 250 जीबी लाइव पर)। इसके बजाय, मेरे पास .sql फाइलों का एक गुच्छा है जो किसी भी रिकॉर्ड को हटा देता है जो एक विशिष्ट परीक्षण द्वारा डाला गया था।
मेरे पास एक वर्ग डीबी हेल्पर है जिसमें प्रश्नों को चलाने के लिए यह कार्य है:
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();
}
एक आकर्षण के रूप में काम करता है, और परीक्षणों को चलाने के लिए और अधिक ओवरहेड नहीं होता है।
अपडेट करें:
यदि आप उपयोगकर्ताओं और उनके संबंधित डेटा से निपटते हैं, तो आमतौर पर उन सभी रिकॉर्ड को लक्षित करना बहुत आसान होता है जिन्हें आपको निकालने की आवश्यकता होती है। सबसे अधिक संभावना है कि उपयोगकर्ता नाम और ईमेल अद्वितीय हैं, और आप उनका उपयोग उपयोगकर्ता की आईडी (ऑटो इंक्रीमेंट प्राइमरी की) प्राप्त करने के लिए कर सकते हैं। संबंधित तालिकाओं में उस आईडी का उपयोग होने की संभावना है। उदाहरण के लिए इस तरह:
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;