Mở tệp rồi mới chạy
SGK minh họa khôi phục `mymusic` trên máy mới chưa có CSDL này. Trong HeidiSQL đã kết nối tới hệ QTCSDL tương ứng, chọn **Tập tin → Load SQL file** (hoặc Ctrl+O), mở đúng tệp `_mymusic.sql`. Nội dung được nạp vào cửa sổ truy vấn; **mở tệp chưa phải là phục hồi**. Đọc qua đầu tệp để biết nó sẽ tạo CSDL nào, có lệnh `DROP DATABASE`/`DROP TABLE` không, và chỉ chạy khi đúng CSDL thử được phép thao tác. Bấm nút chạy truy vấn, đợi hoàn tất, rồi **F5** làm mới danh sách. Mở vài bảng và đối chiếu hàng, không chỉ nhìn thấy tên CSDL.
Hình SGK dùng tệp được xuất với Drop/Create: nếu chạy vào một `mymusic` đang có dữ liệu, các đối tượng cũ có thể bị xóa và dữ liệu cũ bị thay bằng trạng thái sao lưu. Vì vậy, cách luyện an toàn là phục hồi trên **máy/CSDL thử chưa có dữ liệu cần giữ**. Nếu đang xử lí sự cố thật, phải có người quản lí xác nhận bản sao nào sẽ được dùng và giữ bản hiện tại trước khi ghi đè.
Kiểm cái gì sau phục hồi?
Bộ mẫu có sáu bảng: `bannhac`, `banthuam`, `casi`, `nhacsi`, `tinh`, `xa`. Số hàng tương ứng là 3, 3, 2, 2, 2, 2. Sau phục hồi, mở Data của `banthuam`: ba bộ mã phải là `(1,1,1)`, `(2,1,2)`, `(6,6,1)` theo thứ tự cột `idBanthuam`, `idBannhac`, `idCasi`. Hai bản nhạc cùng tên “Mưa đầu mùa” vẫn phải thuộc đúng hai mã nhạc sĩ khác nhau; tên giống nhau không cho phép gộp hàng.
Khi kiểm bài của mình, so danh sách bảng, số hàng và một vài giá trị tiêu biểu với ghi chép lúc sao lưu. Nếu chỉ thấy bảng trống, có thể tệp chỉ chứa cấu trúc hoặc việc chạy bị lỗi; nếu thiếu bảng, có thể lúc xuất đã bỏ chọn. Câu hỏi vận dụng của SGK về chuyển CSDL sang máy khác cũng theo chuỗi **xuất tệp → chuyển tệp an toàn → nhập vào máy có hệ QTCSDL tương ứng → kiểm kết quả**. Tài khoản ở máy đích cần quyền phù hợp; tệp SQL không tự cài MySQL hoặc HeidiSQL.
Nhập bản sao mẫu rồi đối chiếu
Trên môi trường thực hành riêng, mở tệp mẫu sáu bảng bằng **Ctrl+O** trong HeidiSQL 12.21.1.1 Linux. Chọn **UTF-8** ở Encoding; đọc tên CSDL và lệnh DROP trước khi chạy. Bản mẫu tạo lại `btvn24_gui_restore`, vì vậy không chạy nếu tên đó đang chứa dữ liệu cần giữ.
Nhấn **F9** để chạy nội dung đã mở. Nếu xuất hiện cảnh báo DELETE không có WHERE, đối chiếu lại tệp và CSDL đích: đây là bước thay dữ liệu trong bản thử đã xác định. Giữ cảnh báo cho các lần sau; nếu chưa rõ phạm vi thì hủy. Đợi chạy xong, nhấn **F5**, mở các bảng và so với số hàng/mã ở trên. Chỉ mở tệp hoặc chỉ làm mới cây chưa phục hồi dữ liệu.
Bài luyện
Trong HeidiSQL, sau khi chọn Load SQL file và mở _mymusic.sql, bước nào thực sự áp dụng câu lệnh lên máy chủ?
Tên thẻ chỉ cho biết tệp đã mở.
Máy chủ thực thi khi gửi câu lệnh để chạy.
Đóng tệp không tạo bảng.
F5 làm mới hiển thị, không thay thế bước chạy.
Lời giải
Load SQL file nạp nội dung vào cửa sổ truy vấn; phải chạy câu lệnh rồi mới làm mới và kiểm dữ liệu.
Bài luyện
Tệp sao lưu có DROP TABLE và CREATE TABLE. Nếu chạy trên CSDL đã có dữ liệu mới, nguy cơ chính là gì?
DROP xóa đối tượng trước khi tạo lại từ bản sao.
Tệp không tự hợp nhất dữ liệu phát sinh sau sao lưu.
Tác động là lên dữ liệu, không chỉ màu.
Tệp bài học không có nhiệm vụ tự đổi mật khẩu.
Lời giải
Drop/Create có thể thay trạng thái hiện có bằng bản sao cũ; chỉ chạy trên nơi được phép và đã kiểm tệp.
Bài luyện
Sau phục hồi, thấy tên CSDL trong cây bên trái. Còn cần kiểm gì?
Tên CSDL không chứng minh dữ liệu đầy đủ.
Đuôi tệp không phản ánh kết quả nhập.
Đối chiếu cấu trúc và dữ liệu mới xác nhận phục hồi.
Đổi tên không giúp phát hiện lỗi.
Lời giải
Phục hồi đạt yêu cầu khi những bảng và hàng cần dùng trở lại đúng, kể cả dữ liệu tiếng Việt.
Đang học