MySQL Error 1193 – SQLSTATE: HY000 (ER_UNKNOWN_SYSTEM_VARIABLE
) occurs when you try to reference a system variable that MySQL does not recognize. This can happen for various reasons, such as typos, incorrect scope references, or using variables that do not exist in your version of MySQL. This blog post will guide you through diagnosing and fixing this error.
Understanding Error 1193
The error message typically includes the name of the variable that MySQL failed to recognize, indicated by %s
in the error message. This is the starting point for diagnosing the issue.
Diagnosing Error 1193
Here are some steps to diagnose the error:
- Check for Typos: Ensure that the variable name is spelled correctly. Variable names are case-sensitive in UNIX-based systems, so
@@global.sort_buffer_size
is different from@@global.Sort_buffer_size
. - Verify Variable Scope: MySQL system variables have scopes: global, session, or both. If you’re setting a variable, make sure you’re using the correct scope prefix (
@@global.
or@@session.
). - Confirm Variable Existence: The variable you’re trying to use might not exist in your MySQL version. Use the
SHOW VARIABLES;
command to list all available system variables.
Fixing the Error
Here are some examples and how to fix them:
Example 1: Typo in Variable Name
SET @@global.key_buffer_seize = 1048576;
This will result in Error 1193 because the variable key_buffer_seize
does not exist. The correct variable name is key_buffer_size
.
Fix:
SET @@global.key_buffer_size = 1048576;
Example 2: Incorrect Scope
SET @@session.innodb_buffer_pool_size = 104857600;
If innodb_buffer_pool_size
is a global variable, setting it as a session variable will cause Error 1193.
Fix:
SET @@global.innodb_buffer_pool_size = 104857600;
Example 3: Non-Existent Variable
SET @@global.non_existent_variable = 'value';
If non_existent_variable
is not a valid system variable, you will encounter Error 1193.
Fix:
Remove the statement, or replace non_existent_variable
with a valid system variable.
Example 4: Deprecated or Removed Variable
In some cases, a MySQL upgrade might remove or deprecate variables.
Fix:
Check the MySQL documentation for the version you are using to see if the variable has been deprecated or removed. If so, find the recommended alternative and update your configuration or queries accordingly.
Example 5: Incorrect Usage of Server System Variables
Attempting to set a read-only variable will also lead to Error 1193.
SET @@global.version = '5.7.29';
Fix:
Read-only variables cannot be set. If you’re trying to set a read-only variable, review your MySQL configuration to understand why you’re attempting to set this variable and what you’re trying to achieve. Adjust your approach accordingly.
Conclusion
When facing MySQL Error 1193, carefully check the variable name for typos, confirm that you’re using the correct scope, and ensure that the variable exists in your MySQL version. Always refer to the official MySQL documentation for guidance on system variables, especially when upgrading MySQL, as variables may be deprecated or have changed. By following these tips, you can quickly resolve issues related to unknown system variables and maintain a healthy database environment.