Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kiểm thử chấp nhận mã trong giao dịch cơ sở dữ liệu trên MySQL

Luôn luôn có các lựa chọn khác :).

Trong trường hợp của tôi, việc sử dụng kết xuất là không có cơ sở vì chúng tôi cũng có một cơ sở dữ liệu rất lớn (1,2 GB khi loại bỏ các yếu tố cần thiết,> 250 GB khi hoạt động). Thay vào đó, tôi có một loạt tệp .sql có thể xóa bất kỳ bản ghi nào. đã được chèn bởi một bài kiểm tra cụ thể.

Tôi có một lớp DbHelper có chức năng này để chạy các truy vấn:

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

Hoạt động như một sự quyến rũ và không cần phải chạy thử nghiệm nữa.

Cập nhật:

Nếu bạn xử lý người dùng và dữ liệu liên quan của họ, việc nhắm mục tiêu tất cả các bản ghi bạn cần xóa thường khá dễ dàng. Nhiều khả năng tên người dùng và email là duy nhất và bạn có thể sử dụng chúng để lấy id (khóa chính tăng tự động) của người dùng. Id đó có thể được sử dụng trong các bảng liên quan. Ví dụ như thế này:

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. MySql SELECT AS - Nối tất cả các tên trường

  2. Sử dụng trường DATE làm khóa chính của thứ nguyên ngày với MySQL

  3. Đăng và nhận cùng một lúc trong php

  4. Không bắt được kết nối:php_network_getaddresses:getaddrinfo không thành công:Không xác định được tên hoặc dịch vụ

  5. Đặt PDO để ném các ngoại lệ theo mặc định