Bỏ qua, đến nội dung

FAQ

Data source status stuck ở "loading"?

Nguyên nhân: Kết nối đến database ngoài bị timeout hoặc treo.

Giải pháp:

  1. Kiểm tra network giữa server và database ngoài (firewall, VPN).
  2. Gọi dataSources:testConnection với cùng options để debug.
  3. Kiểm tra log server — tìm connection error.
  4. Disable data source (enabled: false) → sửa options → enable lại.

Xóa data source nhưng báo lỗi "fixed"?

Data source có fixed: true không thể xóa — đây là data source main (database chính của ứng dụng). Chỉ data source ngoài (fixed: false) mới xóa được.

Collections từ data source ngoài không hiển thị?

Kiểm tra:

  1. Data source đã enabled: true và status loaded.
  2. loadDataSourceTablesIntoCollections đã chạy — kiểm tra dataSourcesCollections có records.
  3. Gọi dataSources:refresh để force reload.
  4. Nếu database ngoài không có table nào, danh sách collection sẽ rỗng.

ACL data source ngoài có tách biệt với main không?

Có. Mỗi data source có hệ thống ACL riêng hoàn toàn:

Thành phầnMain (plugin-acl)External (plugin-data-source-manager)
Strategyroles.strategydataSourcesRoles.strategy
ResourcesdataSourcesRolesResources (dataSourceKey = 'main')dataSourcesRolesResources (dataSourceKey = key)
ScopesdataSourcesRolesResourcesScopesdataSourcesRolesResourcesScopes (per DS)

Role name giống nhau nhưng quyền trên mỗi data source khác nhau.

Test connection thành công nhưng create thất bại?

Nguyên nhân phổ biến:

  1. key trùng với data source đã tồn tại.
  2. Database user không có quyền đọc information_schema (cần để introspect tables).
  3. Timeout khi introspect database lớn (nhiều tables/views).

Giải pháp: Kiểm tra log server, đảm bảo key unique, cấp quyền SELECT trên information_schema.

Password data source có an toàn không?

options.password được lưu trong dataSources.options JSON. API dataSources:list tự động mask password trong response (***). Tuy nhiên:

  • Password lưu plaintext trong DB → cần bảo vệ database chính.
  • Không nên expose dataSources resource cho role non-admin.

Sao cluster instance B không thấy data source mới?

handleSyncMessage xử lý sync giữa instances. Kiểm tra:

  1. Message bus hoạt động (Redis pub/sub hoặc tương đương).
  2. Instance B đang chạy và connected đến message bus.
  3. Log instance B có nhận sync message không.
  4. Workaround: gọi dataSources:refresh trực tiếp trên instance B.

Có thể tạo collection mới trên data source ngoài không?

Không thông qua plugin này. plugin-data-source-manager chỉ đọc schema từ database ngoài và tạo overlay metadata. Để tạo bảng mới trên database ngoài, phải dùng SQL trực tiếp trên database đó, sau đó dataSources:refresh để load vào ứng dụng.