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.