Error number: 3946; Symbol: ER_FAILED_TO_DETERMINE_IF_ROLE_IS_MANDATORY; SQLSTATE: HY000
Message: Failed to acquire lock on user management service, unable to determine if role `%s`@`%s` is mandatory
Error number: 3946; Symbol: ER_FAILED_TO_DETERMINE_IF_ROLE_IS_MANDATORY; SQLSTATE: HY000
Overview:
ER_FAILED_TO_DETERMINE_IF_ROLE_IS_MANDATORY is an error code in MySQL that is thrown when an attempt to determine whether a role is mandatory has failed. This is a rare error, which displays when the query parser is unable to identify a privilege for a specified User resource.
Error Message:
The error message associated with this error is “Failed to determine if role '%s’ is mandatory.”
Common Cases:
This error usually occurs when an attempt is made to connect a user to an existing role without first determining the role’s mandatory status.
Resolution:
This error can be resolved by improving the coding logic, or by using the “SHOW USERS” command to check the value of the “mandatory” column in the users table. If the mandatory column is set to TRUE, the user must assign the role as mandatory in order to connect. Alternatively, the syntax with NO_AUTO_CREATE_USER can be used to connect with the role, where FALSE is set to the mandatory field.
In conclusion, this error can be resolved by updating the coding logic and in some cases, by using the SHOW USERS command to check the value of the mandatory column.