Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Testy akceptacyjne kodecepcji w ramach transakcji bazodanowej na MySQL

Zawsze są inne opcje :).

W moim przypadku użycie zrzutu nie wchodziło w rachubę, ponieważ mamy również bardzo dużą bazę danych (1,2 GB po rozebraniu do niezbędnych,>250 GB na żywo). Zamiast tego mam kilka plików .sql, które usuwają wszelkie rekordy które zostały wprowadzone przez określony test.

Mam klasę DbHelper, która ma tę funkcję do uruchamiania zapytań:

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();
}

Działa jak urok i nie ma już narzutów na przeprowadzanie testów.

Aktualizacja:

Jeśli masz do czynienia z użytkownikami i powiązanymi z nimi danymi, zwykle dość łatwo jest wskazać wszystkie rekordy, które musisz usunąć. Najprawdopodobniej nazwa użytkownika i adres e-mail są unikalne i możesz ich użyć, aby uzyskać identyfikator (automatyczny klucz podstawowy) użytkownika. Ten identyfikator jest prawdopodobnie używany w powiązanych tabelach. Na przykład w ten sposób:

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać poprawny zrzut za pomocą mysqldump i pojedynczej transakcji, gdy jednocześnie używany jest DDL?

  2. Połączenie Pdo bez nazwy bazy danych?

  3. Problem BULK INSERT w MySQL

  4. Brak połączenia z bazą danych CakePHP Mysql lub nie można go utworzyć

  5. Emoji nie są wstawiane w węźle bazy danych js mysql