Error
Error Code:
38004
PostgreSQL Error 38004: Reading SQL Data Not Permitted
Description
This error indicates that an external routine, such as a user-defined function or stored procedure, attempted to read SQL data but was explicitly denied permission. This typically happens when the function's security context or permissions do not allow it to access the necessary database objects.
Error Message
reading sql data not permitted
Known Causes
4 known causesInsufficient Permissions
The user or role executing the external routine, or the routine's owner (for SECURITY DEFINER functions), lacks the necessary SELECT privileges on the tables or views being accessed.
Incorrect Security Context
A SECURITY DEFINER function might not have its search_path correctly set, preventing it from finding or accessing objects even if the owner has permissions.
Restricted Function Environment
The function might be running in a context (e.g., within another restricted function or transaction) where SQL data access is intentionally limited or disallowed.
Mismatched Volatility Declaration
An IMMUTABLE or STABLE function attempts to read data that could change, violating its declared volatility and triggering a security check.
Solutions
Coming SoonGeneral Troubleshooting Tips
- Check the error message carefully for specific details
- Review recent changes that might have caused the error
- Search for the exact error code in the official documentation
- Check log files for additional context
- Try restarting the application or service