Đôi khi bạn có thể cần hoàn tác các thay đổi đã thực hiện đối với cơ sở dữ liệu MySQL. Bạn có thể dễ dàng làm điều đó bằng cách sử dụng MySQL Rollback query. Đây là cách khôi phục cơ sở dữ liệu MySQL bằng lệnh MySQL Rollback
Khôi phục MySQL hoạt động như thế nào
Câu lệnh Rollback của MySQL cho phép bạn khôi phục hoặc hoàn tác thêm một câu lệnh đã được thực hiện gần đây. Ví dụ: nếu bạn vô tình xóa hoặc cập nhật các hàng, bạn có thể sử dụng MySQL khôi phục các câu lệnh đó và khôi phục cơ sở dữ liệu ban đầu. Tuy nhiên, khôi phục MySQL chỉ hoạt động nếu các thay đổi cơ sở dữ liệu KHÔNG được cam kết với cơ sở dữ liệu
Phần thưởng đọc. Cách sử dụng Tổng hợp MySQL
Chúng ta có thể quay lại sau khi cam kết trong MySQL không
Không. Thật không may, bạn không thể hoàn tác các thay đổi đã được cam kết với cơ sở dữ liệu
Cách khôi phục cơ sở dữ liệu MySQL
Xin lưu ý, theo mặc định, MySQL được cấu hình để tự động thực hiện mọi truy vấn SQL. Vì vậy, điều quan trọng là tắt tự động cam kết trong MySQL bằng cách sử dụng câu lệnh sau, nếu bạn muốn có thể sử dụng MySQL Rollback
Đăng nhập vào cơ sở dữ liệu MySQL và chạy lệnh sau để tắt autocommit
SET autocommit = 0
Hoặc
SET autocommit = OFF
Bạn sử dụng câu lệnh sau để bật chế độ autocommit một cách rõ ràng
SET autocommit = 1
Hoặc
SET autocommit = ON
Phần thưởng đọc. Cách kiểm tra phiên bản MySQL
Giả sử bạn có bảng bán hàng sau[product,order_date,sale]. Chúng tôi sẽ xem xét cách phát hành khôi phục MySQL sau lệnh xóa
mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+
Bây giờ chúng ta hãy tắt autocommit như đã đề cập ở trên,
mysql> set autocommit=0;
Tiếp theo, hãy để chúng tôi xóa tất cả các hàng trong bảng bán hàng
mysql> delete from sales; Query OK, 5 rows affected [0.00 sec] mysql> select count[*] from sales; +----------+ | count[*] | +----------+ | 0 | +----------+
Như bạn có thể thấy tất cả 5 hàng trong bảng bán hàng đã bị xóa
Bây giờ, chúng ta hãy phát hành MySQL Rollback sau lệnh xóa
mysql> rollback; Query OK, 0 rows affected [0.07 sec] mysql> select count[*] from sales; +----------+ | count[*] | +----------+ | 5 | +----------+
Như bạn có thể thấy, 5 hàng đã xóa đã được khôi phục do các thay đổi không được cam kết. Tuy nhiên, nếu bạn gặp sự cố với câu lệnh COMMIT sau khi xóa và trước lệnh ROLLBACK, thì MySQL sẽ không khôi phục bảng của bạn
Phần thưởng đọc. Cách vô hiệu hóa kiểm tra khóa ngoại trong MySQL
Lệnh cập nhật khôi phục MySQL
Tương tự, bạn có thể khôi phục lệnh cập nhật. Hãy để chúng tôi cập nhật cột bán hàng trong bảng bán hàng ở trên
________số 8Như bạn có thể thấy, chúng tôi đã tăng gấp đôi giá trị của cột giảm giá. Bây giờ chúng ta hãy rollback lệnh cập nhật
mysql> rollback; mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+
Như bạn có thể thấy các giá trị cũ của cột bán hàng đã được khôi phục
Bạn cũng có thể bao gồm Khôi phục MySQL trong các thủ tục được lưu trữ và giao dịch MySQL cho Khôi phục MySQL do lỗi. Điều quan trọng là vô hiệu hóa autocommit để thực thi khôi phục MySQL
Trong hướng dẫn này, bạn đã học cách sử dụng các câu lệnh giao dịch MySQL bao gồmSET autocommit = OFF08
SET autocommit = OFF18and
SET autocommit = OFF01 để quản lý giao dịch