Informix Error -977: No permission on fragment (dbspace-name/partition-name).
Cause and resolution
No permission on fragment (dbspace-name/partition-name).
The user does not have the required fragment-level privilege on the table fragment. This message is always followed by another message that identifies the privilege that the user lacks. If an INSERT statement fails, the second message is -271. If an UPDATE statement fails, the second message is -346. If a DELETE statement fails, the second message is -240.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-977 fires when a user attempts to modify data in a specific table fragment without holding the
required fragment-level privilege on it — per the official guidance, this message is always
followed by a second message identifying exactly which privilege is missing and which statement
triggered it: -271 for a failed INSERT, -346 for a failed UPDATE, -240 for a failed DELETE.
- Missing fragment-level
INSERTprivilege, per the official guidance — surfaces alongside -271, "Could not insert new row into the table." - Missing fragment-level
UPDATEprivilege, per the official guidance — surfaces alongside -346, "Could not update a row in the table." - Missing fragment-level
DELETEprivilege, per the official guidance — surfaces alongside -240, "Could not delete a row."
Solutions / Resolution
- Read the accompanying -271/-346/-240 message to identify which operation and which fragment triggered -977, per the official guidance — -977 alone doesn't say which.
- Grant the specific fragment-level privilege the user is missing, on the named dbspace/partition, once the operation is identified.
- Confirm the table is actually fragmented by expression — fragment-level privileges (and
-977 itself) only apply in that scheme; see -976 if a
GRANT FRAGMENTattempt is what's failing instead of a DML statement.
Examples
Reading the paired message
977: No permission on fragment (dbs2/frag_2020).
271: Could not insert new row into the table.
The -977 names the fragment; the paired -271/-346/-240 names the operation that was attempted against it. Both are needed to know what privilege to grant and to whom.
Diagnostic Checks
- Identify the paired message (-271, -346, or -240) that always accompanies -977, to determine the failing operation.
- Confirm which fragment (named in the -977 text) the user lacks privilege on.
- Check the user's current fragment-level grants against what the failing statement needs.
Related Errors / Related Topics
- -271 — "Could not insert new row into the table." Pairs with -977 when the failing
statement was an
INSERT. - -346 — "Could not update a row in the table." Pairs with -977 when the failing statement
was an
UPDATE. - -240 — "Could not delete a row." Pairs with -977 when the failing statement was a
DELETE. - -976 — "Table must be fragmented by expression to grant fragment authority." The
GRANT-time counterpart: what happens before fragment authority can even be assigned, if the table isn't fragmented by expression.
-977 never appears alone — read the paired -271/-346/-240 message to know which operation and fragment actually failed.