Error
Error Code:
38001
PostgreSQL Error 38001: SQL Not Permitted in Routine
Description
This error occurs when a PostgreSQL external routine, such as a function or stored procedure, attempts to execute SQL statements but is explicitly defined to restrict such operations. It commonly arises when a routine declared as `NO SQL` or `READS SQL DATA` tries to perform actions that modify or contain SQL.
Error Message
containing sql not permitted
Known Causes
3 known causesMismatched SQL Data Access
A function or procedure is declared with a restrictive SQL data access characteristic (e.g., `NO SQL`, `READS SQL DATA`) but attempts to execute SQL operations beyond its scope (e.g., `MODIFIES SQL DATA`).
External Language Routine Constraint
An external language routine (e.g., PL/pgSQL, PL/Python) tries to execute SQL when its definition or the surrounding context prohibits it.
Database Security Configuration
Specific database roles or system configurations might impose restrictions on SQL execution within certain routines for security or operational integrity.
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