Mysql
 sql >> база данни >  >> RDS >> Mysql

Тестове за приемане на Codeception в транзакция на база данни на MySQL

Винаги има и други варианти :).

В моя случай използването на dump не можеше да става, тъй като ние също имаме много голяма база данни (1,2 GB, когато се намали до най-важното,>250 GB на живо). Вместо това имам куп .sql файлове, които премахват всички записи които бяха въведени чрез специфичен тест.

Имам клас DbHelper, който има тази функция за изпълнение на заявки:

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. неправилно убиване на mysqld - сега не се стартира

  2. Изчисляване на времева разлика между 2 дати в минути

  3. Разбор на низ в mysql Дата

  4. Django модели:стойност по подразбиране за колона

  5. Заявка за търсене с множество маркери