Informix Error -514: Only a DBA can create, drop, grant, or revoke for another user.
Cause and resolution
Only a DBA can create, drop, grant, or revoke for another user.
This data definition statement specifies a table, view, index, or synonym that is owned by another user or grants/revokes a privilege as another user. Any of these things requires Database Administrator privilege, which you do not have on this database. If you intended to work on objects that you own, review the punctuation of the statement. At some point in it, you have qualified a name with the user ID of another account. Otherwise, get a DBA to grant you DBA privilege or to perform this operation for you.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-514 fires when a data definition statement (create, drop, or a GRANT/REVOKE) names an object qualified with another user's ID, or performs a GRANT/REVOKE as another user, without the DBA privilege that operation requires.
- An object name accidentally qualified with the wrong user ID — per the official guidance, the most common cause when the intent was actually to work on the session's own objects.
- A genuine attempt to create, drop, or grant/revoke on behalf of another user's objects, which does require Database Administrator privilege on the database.
- Copy-pasted DDL from another environment where the owner prefix (
otheruser.tablename) was carried over but doesn't apply in the current database.
Solutions / Resolution
- If objects owned by the current session's own user ID were intended, per the official guidance, review the statement's punctuation/qualification — an owner prefix may have been added by mistake.
- If the operation genuinely targets another user's object or acts as another user, per the
official guidance, either get a DBA to grant this session DBA privilege on the database:
GRANT DBA TO app_user; - Or have a DBA-privileged user perform the operation directly, rather than granting DBA more broadly than needed.
Examples
An accidental owner qualification
CREATE TABLE otheruser.orders (order_id INT);
-- -514: app_user isn't a DBA and doesn't own 'otheruser'
Corrected — no owner prefix needed for the session's own objects
CREATE TABLE orders (order_id INT);
A genuine cross-user operation, done by a DBA
-- Run by a user with DBA privilege:
GRANT SELECT ON orders TO other_app_user;
Diagnostic Checks
- Re-read the statement for an owner-name qualifier (
owner.object) that may not have been intentional. - Confirm the session's actual database privilege level by querying
sysusers:SELECT username, usertype FROM sysusers WHERE username = USER;usertype = 'D'indicates DBA privilege; anything else meansGRANT DBAhasn't been issued to this user on this database.
Related Errors / Related Topics
No closely related error codes are cross-referenced for -514 in this set yet.
Usually an accidental owner-qualified name rather than a genuine need for DBA privilege — check the punctuation before escalating the privilege request.