MySQL: 查询(全局)变量的值
MySQL: 查询(全局)变量的值
我知道可以使用以下命令打印全局或会话变量:
SHOW GLOBAL VARIABLES;
或者
SHOW SESSION VARIABLES;
如果我想调查特定变量,可以使用如下命令:
SHOW GLOBAL VARIABLES LIKE 'log_bin_trust_function_creators';
这将返回如下形式的结果:
+---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | OFF | +---------------------------------+-------+
这对于手动检查相应的值来说是完全有效的,但为了以编程方式查询这些变量的值,我对这个格式中的两个问题感到困扰:
- 它返回两列:变量名和其值。然而,我只对值感兴趣,因为变量名我已经事先知道了(毕竟我在查询中指定了它)。
- 实际值似乎是实际值的字符串表示。在设置这个特定值时,我迄今只见过使用整数
0
和1
,所以我期望这个设置实际上应该存储为数字类型。然而,在这里它以字符串(OFF
)的形式返回。虽然将其转换为布尔值很容易,但我不确定这个字符串表示是否可能取决于诸如区域设置之类的因素,如果是这样,将其转换为布尔值可能会变得棘手。
所以我的问题是:有没有一种简洁的方法来只查询给定(全局)变量的值,并将其原样返回,而不是尝试进行漂亮的打印/字符串化?
MySQL: 查询(全局)变量的值
有时我们需要查询MySQL的全局变量的值,但是我们可能不知道具体的查询方法。下面是解决该问题的方法:
首先,我们需要感谢这个回答,它提供了解决方案。
如果我们知道一个给定的全局或会话变量的名称,我们可以通过以下方式查询其实际值:
SELECT @.<variableName>;
或者 SELECT @.<variableName>;
对于提供的示例,我们可以使用以下查询语句获取log_bin_trust_function_creators变量的值:
SELECT @.log_bin_trust_function_creators;
查询结果如下:
+------------------------------------------+ | @.log_bin_trust_function_creators | +------------------------------------------+ | 0 | +------------------------------------------+
通过以上方法,我们可以轻松地查询MySQL的全局变量的值。