Error
Error Code:
1226
MariaDB Error 1226: User Resource Limit Reached
Description
This error indicates that a specific MariaDB user has exceeded one of their allocated server resource limits. These limits can include the number of queries, updates, connections, or concurrent connections allowed within a defined period, preventing further operations.
Error Message
User '%s' has exceeded the '%s' resource (current value: %ld)
Known Causes
4 known causesExceeded Query Limit
The user has performed more queries than allowed within the specified hourly limit.
Too Many Updates
The user has executed an excessive number of update operations within the hourly limit.
Concurrent Connection Limit
The user has opened more simultaneous connections than permitted by their assigned limit.
Hourly Connection Limit
The user has established too many new connections within an hour, exceeding their connection limit.
Solutions
3 solutions available1. Temporarily Increase Resource Limit easy
Quickly resolve the issue by temporarily increasing the user's resource limit.
1
Identify the user and the specific resource that has been exceeded. The error message will provide this information (e.g., '%s' and '%s').
2
Connect to your MariaDB server as a user with sufficient privileges (e.g., root).
mysql -u root -p
3
Use the `SET RESOURCE` command to temporarily increase the limit for the affected user. Replace 'your_user', 'resource_name', and 'new_limit' with the actual values from the error message and your desired new limit. For example, to increase max_user_connections for 'app_user' to 200:
SET RESOURCE 'your_user' 'resource_name' = new_limit;
4
Re-run the operation that was failing. This solution is temporary and will reset upon server restart. Consider a permanent solution for long-term stability.
2. Permanently Adjust User Resource Limits medium
Modify the user's resource limits permanently in the MariaDB configuration.
1
Identify the user and the specific resource that has been exceeded. The error message will provide this information.
2
Connect to your MariaDB server as a user with sufficient privileges (e.g., root).
mysql -u root -p
3
Use the `ALTER USER` statement to permanently set the desired resource limit. Replace 'your_user', 'resource_name', and 'new_limit' with the actual values. For example, to set max_user_connections for 'app_user' to 200 permanently:
ALTER USER 'your_user'@'localhost' WITH MAX_USER_CONNECTIONS 200;
4
If you need to adjust other resource limits (e.g., max_questions, max_updates), consult the MariaDB documentation for the correct syntax for `ALTER USER` and the specific resource names.
5
Verify the new limits by querying the `mysql.user` table:
SELECT user, host, max_user_connections FROM mysql.user WHERE user = 'your_user';
3. Analyze and Optimize Application Resource Usage advanced
Investigate the application's behavior to understand why it's hitting resource limits.
1
Examine application logs for patterns of excessive database activity, such as frequent connections, long-running queries, or inefficient data retrieval.
2
Use MariaDB's performance monitoring tools like `SHOW PROCESSLIST` or `SHOW GLOBAL STATUS` to identify bottlenecks and high resource consumers.
SHOW PROCESSLIST;
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
3
Optimize SQL queries by adding indexes, rewriting inefficient queries, or reducing the scope of data retrieved. Tools like `EXPLAIN` can help identify slow queries.
EXPLAIN SELECT * FROM your_table WHERE condition;
4
Implement connection pooling in your application to reuse database connections and reduce the overhead of establishing new ones. This is particularly effective for reducing `max_user_connections` limits.
5
Consider implementing rate limiting or throttling mechanisms within the application to control the frequency of database requests.