sql >> Databáze >  >> RDS >> Mysql

Testy přijetí kódů v rámci databázových transakcí na MySQL

Vždy jsou jiné možnosti :).

V mém případě použití výpisu nepřicházelo v úvahu, protože máme také velmi rozsáhlou databázi (1,2 GB, když se stáhne na to nejpodstatnější,>250 GB naživo). Místo toho mám spoustu souborů .sql, které odstraňují jakékoli záznamy které byly vloženy specifickým testem.

Mám třídu DbHelper, která má tuto funkci pro spouštění dotazů:

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

Funguje jako kouzlo a už žádné režijní spouštění testů.

Aktualizace:

Pokud se zabýváte uživateli a jejich souvisejícími daty, je obvykle docela snadné zaměřit se na všechny záznamy, které potřebujete odstranit. Uživatelské jméno a e-mail jsou s největší pravděpodobností jedinečné a můžete je použít k získání id (automatického zvýšení primárního klíče) uživatele. Toto id se pravděpodobně používá v souvisejících tabulkách. Například takto:

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. Uživatelem definovaná proměnná MySQL v klauzuli WHERE

  2. Aplikace přestala fungovat kvůli databázi

  3. DevOps:DBA nebo vývojář – Jak dosáhnout správné rovnováhy

  4. Použití korelační funkce PostgreSQL