MySQL Workbench là một công cụ thiết kế cơ sở dữ liệu trực quan thống nhất hoặc công cụ giao diện, đồ họa được sử dụng để làm việc bởi kiến trúc sư cơ sở dữ liệu, nhà phát triển và quản trị viên cơ sở dữ liệu. Khi ta thực hiện câu lệnh với MySQL thì điều không thể tránh khỏi việc câu lệnh của chúng ta bị lỗi, vậy MySQL Workbench hỗ trợ ta xử lý vấn đề này như thế nào, hãy cùng SmartData tìm hiểu cách debug lỗi trên MySQL Workbench
Chức năng của MySQL Workbench
MySQL Workbench bao gồm năm chức năng chính sau đây:
- SQL Development: Chức năng này cho phép bạn thực thi các truy vấn SQL, tạo và quản lý các kết nối đến Server cơ sở dữ liệu với sự trợ giúp của trình soạn thảo SQL tích hợp sẵn.
- Data Modelling (Design): Chức năng này cung cấp khả năng cho phép bạn tạo các mô hình của Schema cơ sở dữ liệu bằng đồ thị, thực hiện kỹ thuật đảo ngược và chuyển tiếp giữa một Schema và cơ sở dữ liệu trực tiếp, và chỉnh sửa tất cả các khía cạnh của cơ sở dữ liệu bằng trình chỉnh sửa Table. Trình chỉnh sửa Table cung cấp các phương tiện để chỉnh sửa bảng, cột, chỉ mục, dạng xem, trình kích hoạt, phân vùng,…
- Server Administration: Chức năng này cho phép bạn quản lý các phiên bản MySQL Server bằng cách quản lý người dùng, kiểm tra dữ liệu kiểm tra, xem tình trạng cơ sở dữ liệu, thực hiện sao lưu và phục hồi cũng như giám sát hiệu suất của MySQL Server.
Giao diện cửa sổ của MySQL Workbench
- Object Browser: Hiển thị cấu trúc các đối tượng trên cơ sở dữ liệu mà ta kết nối đến
- SQL Visual Editor: nơi cho phép ta thực hiện triển khai các câu lệnh SQL
- Query Result: Hiển thị kết quả của cậu lệnh SQL
- History Output Window: Hiển thị lịch sử trạng thái các câu lệnh
- Help Pannel: Hiển thị các cú pháp gợi ý cho người dùng
Cách sử dụng MySQL Workbench để debug khi thực hiện câu lệnh
Khi ta thực hiện câu lệnh với MySQL thì điều không thể tránh khỏi việc câu lệnh của chúng ta bị lỗi, vậy nếu câu lệnh đó được chạy trên MySQL Workbench thì lỗi xảy ra sẽ như thế nào
Ta đi vào một ví dụ về câu lệnh thành công
SQL> INSERT INTO `NHANVIEN` VALUES ('LÊ', 'QUỲNH', 'NHƯ', '001', '1967-02-01', '291 Hồ Văn Hue, Tp HCM', 'Nữ', 56000, '006', 4);
Ở đây câu lệnh thực hiện thành công và nhận kết quả
Ta có thể thấy ở phần History Output Window có hiển thi lịch sử thao tác của ta với dấu tích màu xanh nghĩa là câu lệnh insert đã thực hiện thành công và message là “1 row(s) affected”
Đó là trường hợp thành công, bây giờ ta tiếp tục với trường hợp lỗi khi mình thay đổi định dạng của trường NGSINH sai với định dạng mặc định của MySQL mà không sử dụng thêm hàm STR_TO_DATE()
SQL> INSERT INTO `NHANVIEN` VALUES ('NGUYỄN', 'MẠNH', 'HÙNG', '004', '04-03-2000', '95 Bà Rịa Vũng Tàu', 'Nam', 38000, '005', 5);
Kết quả ngay lập tức phần History Output Window sẽ hiển thị thêm 1 dòng có dấu tích đỏ báo lỗi
Nghĩa là ở đây câu lệnh insert đã bị sai nên database sẽ từ chối thực hiện câu lệnh này và trả về cho ta một response là “Error Code: 1292. Incorrect date value: ’04-03-2000′ for column ‘NGSINH’ at row 1”
Hãy cùng chúng tôi phân tích ví dụ này để rút ra bài học cho các vấn đề sau này.
Khi lỗi ta nhận message có dạng “Error Code: XXXX. message”
- Về phần Error Code: MySQL đã tổng quan được các lỗi tương tự nhau và đánh định danh cho chúng bằng một mã code để người dùng khi làm việc có thể dễ dàng tìm kiếm.
Mọi người có thể tham khảo ở đây: Các Erorr Code trong MySQL
Ví dụ như mã code 1292 ở trên là “Truncated incorrect %s value: ‘%s’” nghĩa là định dạng chuỗi không thỏa mãn
- Tiếp tục với message phía sau: trong mỗi trường hợp cụ thể MySQL sẽ trả về một message tương ứng với lỗi đó.
Như trường hợp message ở trên là “Incorrect date value: ’04-03-2000′ for column ‘NGSINH’ at row 1” nghĩa là giá trị chuỗi ’04-03-2000′ không đúng với trường NGSINH có kiểu dữ liệu là date, lỗi xảy ra tại dòng 1.
Ở đây message không được MySQL định nghĩa tổng quan mà sẽ chi tiết cho từng lỗi, nên trong từng trường hợp ta sẽ đọc hiểu message và tìm cách sửa lỗi.
Như vậy sau khi phân tích response trả về ta có thể kết luận lỗi của câu lệnh trên là giá trị chuối ’04-03-2000′ khi truyền vào trường ngày sinh không đúng định dạng mà MySQL có thể hiểu.
Sửa lỗi ở đây ta có 2 cách
Cách 1 là truyền đúng định dạng mặc định của kiểu dữ liệu date
SQL> INSERT INTO `NHANVIEN` VALUES ('NGUYỄN', 'MẠNH', 'HÙNG', '004', '2000-03-04', '95 Bà Rịa Vũng Tàu', 'Nam', 38000, '005', 5);
Hoặc sử dụng hàm STR_TO_DATE() để thay đối định dạng dữ liệu
SQL> INSERT INTO `NHANVIEN` VALUES ('NGUYỄN', 'MẠNH', 'HÙNG', '004', STR_TO_DATE('04-03-2000', '%d-%c-%Y'), '95 Bà Rịa Vũng Tàu', 'Nam', 38000, '005', 5);
Kết luận
Trên đây là bài viết chia sẻ kinh nghiệm về việc xử lý như thế nào khi câu lệnh có lỗi trên MySQL Workbench.
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 3 tháng của SmartData.
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: