Dear Nocobase Team,
I am writing to report a regression bug affecting the Delete action on collections connected to an external MariaDB data source. This issue was not present in an earlier version and appears to have been introduced in or before v20.0.46.
Environment
- Nocobase version: v20.0.46
- Data source type: External MariaDB
- Affected action: Delete (via UI action button)
- User permissions tested: Admin (full permissions) — issue persists regardless of role
Behaviour Observed
When a user clicks the Delete button on a record in any block type (table block, form block, details block, etc.) bound to an external MariaDB data source:
- The UI displays a spinning loading indicator that never stops, and the record remains unchanged — as if the action was never triggered
- The Nocobase API logs confirm the request completes with HTTP 200 and returns
{"data": 1} - However, the record is not deleted from the underlying MariaDB database — it remains intact and reappears on page refresh
Create and Edit actions on the same collection work correctly. Only Delete is affected.
Technical Detail
Inspecting the API logs, the UI’s delete button calls the association destroy path:
POST /api/student/{id}/has_enrolment:destroy?filterByTk[ID]=5000433
→ HTTP 200, {"data": 1} ← success reported, record not deleted
This indicates the bug is in how Nocobase’s association destroy action propagates to the external data source. The Nocobase layer reports success but does not execute the DELETE statement against the external MariaDB.
Notably, deleting the same record directly via the API works correctly:
POST /api/enrolment:destroy?filterByTk=5000433
→ HTTP 200, {"data": 1} ← record is successfully deleted from MariaDB
This confirms the issue is specific to how the UI’s association destroy path handles external data sources, and is not a general database connectivity or permissions problem.
Steps to Reproduce
- Connect a MariaDB external data source in Nocobase
- Define a collection and a relationship (e.g.
studenthas manyenrolmentvia foreign key) - Add a Delete action button to any block type displaying the related records
- Click Delete on any record — confirm with the dialog
- Observe: a spinning indicator appears and never resolves; the record still exists in MariaDB
Expected Behaviour
The delete action should propagate through the association and execute a DELETE statement on the external MariaDB, consistent with how Create and Edit actions work and how the direct API call behaves.
Regards,
Nat