Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tes penerimaan codeception dalam transaksi database di MySQL

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 4:banyak di mana dengan atau fasih

  2. MySQL mengurutkan berdasarkan beberapa daftar

  3. Bagaimana cara mengubah zona waktu di MySQL

  4. Menggunakan SUM() tanpa mengelompokkan hasilnya

  5. Nilai default MySQL sebagai nilai bidang lain