Giao diện
Câu hỏi thường gặp — MariaDB Data Source
Cài đặt và kết nối
Không thể kết nối đến MariaDB, báo lỗi timeout?
Cách xử lý theo thứ tự:
- Kiểm tra MariaDB đang chạy và lắng nghe trên port 3306:
systemctl status mariadb - Xác nhận firewall/security group cho phép kết nối từ IP của server Digiforce
- Thử kết nối thủ công từ server Digiforce:
mysql -h <host> -P 3306 -u <user> -p - Kiểm tra MariaDB không bind chỉ
127.0.0.1— cần0.0.0.0hoặc IP cụ thể trongbind-address - Kiểm tra
max_connectionstrên MariaDB chưa đạt giới hạn
Kết nối thành công nhưng không thấy bảng nào?
Nguyên nhân có thể:
- User MariaDB không có quyền
SELECTtrên các bảng - Tên database sai
- Database rỗng (không có bảng)
Cách xử lý:
- Kiểm tra quyền:
SHOW GRANTS FOR 'user'@'%'; - Xác nhận tên database:
SHOW DATABASES; - Nhấn Refresh để introspect lại schema
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 (an toàn nhất)
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 hoặc user có quyền SUPER/ALL PRIVILEGES.
Sử dụng hằng ngày
Dữ liệu trên Digiforce có đồng bộ real-time với MariaDB không?
Có. Plugin truy vấn trực tiếp MariaDB mỗi lần request — không có cache layer. Dữ liệu luôn cập nhật theo MariaDB. Tuy nhiên, nếu có ứng dụng khác ghi vào MariaDB, Digiforce sẽ thấy thay đổi ngay khi refresh trang.
Có thể tạo relation giữa bảng nội bộ và bảng MariaDB không?
Không. Hiện tại chỉ hỗ trợ relation giữa các bảng trong cùng một data source. Không thể liên kết cross-datasource (ví dụ: bảng PostgreSQL nội bộ với bảng MariaDB bên ngoài).
Hiệu năng như thế nào với bảng lớn?
Plugin sử dụng Sequelize connection pool để tối ưu kết nối. Để đảm bảo hiệu năng:
- Tạo index phù hợp trên MariaDB cho các cột thường filter/sort
- Phân trang mặc định 20 bản ghi/trang — giảm tải query
- Tránh
SELECT *trên bảng có nhiều cột TEXT/BLOB - Giám sát slow query log trên MariaDB
Có thể kết nối nhiều MariaDB instance cùng lúc không?
Có. Tạo nhiều data source với type mariadb, mỗi cái trỏ đến instance khác nhau. Mỗi data source độc lập về kết nối và collection.
Lỗi thường gặp
Lỗi "Access denied" khi ghi dữ liệu
Nguyên nhân: User MariaDB không có quyền INSERT, UPDATE hoặc DELETE.
Cách xử lý: Cấp quyền phù hợp:
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 trên MariaDB đã thay đổi (thêm/xóa cột) nhưng metadata trong Digiforce chưa được cập nhật.
Cách xử lý: Vào Data sources → [data source] → Refresh để introspect lại schema.
Lỗi "plugin need data-source-manager plugin enabled"
Nguyên nhân: Plugin data-source-manager chưa được kích hoạt.
Cách xử lý: Vào Plugin Manager, bật data-source-manager trước, sau đó bật plugin-data-source-external-mariadb.
Kiểu ENUM không hiển thị đúng options
Nguyên nhân: Plugin phân tích chuỗi ENUM(...) từ định nghĩa cột. Nếu giá trị enum chứa ký tự đặc biệt hoặc dấu phẩy, có thể parse sai.
Cách xử lý: Đảm bảo giá trị ENUM đơn giản (chữ, số, gạch dưới). Nếu cần giá trị phức tạp, cân nhắc dùng bảng lookup thay vì ENUM.
MariaDB có khác gì MySQL khi cấu hình?
MariaDB tương thích giao thức MySQL nhưng plugin sử dụng driver riêng (dialect mariadb) để tối ưu. Cấu hình giống MySQL nhưng:
- Port mặc định giống: 3306
- Cú pháp SQL tương thích
- Một số kiểu dữ liệu riêng MariaDB (INET6, SEQUENCE...) có thể chưa được map đầy đủ