Giao diện
Câu hỏi thường gặp — MySQL Data Source
Cài đặt và kết nối
Không thể kết nối đến MySQL, báo lỗi timeout?
Cách xử lý theo thứ tự:
- Kiểm tra MySQL đang chạy:
systemctl status mysqlhoặcsystemctl status mysqld - Xác nhận MySQL lắng nghe trên port 3306:
netstat -tlnp | grep 3306 - Kiểm tra
bind-addresstrongmy.cnf— phải là0.0.0.0hoặc IP server, không chỉ127.0.0.1 - Kiểm tra firewall/security group cho phép port 3306 từ IP server Digiforce
- Thử kết nối thủ công:
mysql -h <host> -P 3306 -u <user> -p - Kiểm tra
max_connectionschưa đạt giới hạn
Kết nối thành công nhưng không thấy bảng?
Nguyên nhân có thể:
- User MySQL không có quyền
SELECTtrên bảng - Tên database sai
- Database rỗng
Cách xử lý:
- Kiểm tra quyền:
SHOW GRANTS FOR 'user'@'%'; - Liệt kê bảng:
SHOW TABLES; - Nhấn Refresh để introspect lại
Có cần tạo user riêng cho Digiforce không?
Khuyến nghị mạnh. Tạo user riêng với quyền tối thiểu:
sql
-- Chỉ đọc
GRANT SELECT ON my_database.* TO 'digiforce_ro'@'%';
-- Đọc và ghi
GRANT SELECT, INSERT, UPDATE, DELETE ON my_database.* TO 'digiforce_rw'@'%';Tránh dùng user root.
Sử dụng hằng ngày
Dữ liệu có đồng bộ real-time không?
Có. Plugin truy vấn trực tiếp MySQL mỗi lần request — không có cache layer. Bất kỳ thay đổi nào trên MySQL sẽ được phản ánh ngay khi refresh trang Digiforce.
Có thể tạo relation giữa bảng nội bộ và bảng MySQL không?
Không. Chỉ hỗ trợ relation giữa các bảng trong cùng một data source. Plugin tự động phát hiện foreign key trong MySQL và tạo quan hệ hasMany/belongsTo tương ứng.
Hiệu năng với bảng lớn?
- Plugin sử dụng Sequelize connection pool
- Phân trang mặc định 20 bản ghi/trang
- Đảm bảo có index trên cột thường filter/sort
- MySQL 8.x có cải thiện đáng kể về performance so với 5.7
MySQL 8.x caching_sha2_password có được hỗ trợ?
Có. Driver mysql2 hỗ trợ authentication plugin caching_sha2_password (mặc định của MySQL 8.x). Nếu gặp lỗi, kiểm tra driver mysql2 đã cập nhật phiên bản mới nhất.
Bảng có composite primary key có hoạt động không?
Có. Plugin hỗ trợ bảng với composite primary key (nhiều cột tạo thành primary key). Tuy nhiên, một số thao tác UI có thể hạn chế với composite key.
Lỗi thường gặp
Lỗi "Access denied" khi ghi dữ liệu
Nguyên nhân: User MySQL không có quyền INSERT, UPDATE hoặc DELETE.
Cách xử lý:
sql
GRANT INSERT, UPDATE, DELETE ON my_database.* TO 'digiforce_rw'@'%';
FLUSH PRIVILEGES;Lỗi "Unknown column" sau khi thay đổi schema
Nguyên nhân: Cấu trúc bảng MySQL đã thay đổi nhưng metadata Digiforce chưa cập nhật.
Cách xử lý: Data sources → [data source] → Refresh để introspect lại schema.
Lỗi "plugin need data-source-manager plugin enabled"
Cách xử lý: Bật data-source-manager trong Plugin Manager trước khi bật plugin MySQL.
Ký tự tiếng Việt bị lỗi (mojibake)
Nguyên nhân: Database hoặc bảng MySQL không dùng charset utf8mb4.
Cách xử lý:
sql
-- Kiểm tra charset
SHOW VARIABLES LIKE 'character_set%';
-- Đổi charset database
ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Đổi charset bảng
ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Lỗi SSL handshake failed
Cách xử lý:
- Kiểm tra MySQL đã bật SSL:
SHOW VARIABLES LIKE '%ssl%'; - Nếu dùng self-signed certificate, cấu hình CA certificate
- Thử tắt "Reject Unauthorized" để debug (không dùng trên production)
Vấn đề khác
Có thể kết nối nhiều MySQL instance cùng lúc không?
Có. Tạo nhiều data source type mysql, mỗi cái trỏ đến instance/database khác nhau.
Plugin có hỗ trợ read replica không?
Mỗi data source trỏ đến một endpoint. Để dùng read replica, tạo data source riêng trỏ đến replica endpoint.
Khác gì với MariaDB plugin?
MySQL và MariaDB tương thích nhau nhưng sử dụng driver riêng:
- MySQL plugin: dùng
mysql2driver, dialectmysql - MariaDB plugin: dùng
mariadbdriver, dialectmariadb
Dùng plugin tương ứng với loại database để đảm bảo tương thích tốt nhất.