Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Using Options to Set Program Variables

6.2.2.5 使用选项设置程序变量

许多 MySQL 程序都有内部变量,可以在运行时使用 SET 语句设置。请参阅 第 15.7.6.1 节,“SET 语法用于变量赋值”,和 第 7.1.9 节,“使用系统变量”

这些程序变量也可以在服务器启动时使用相同的语法设置,用于指定程序选项。例如,mysql 有一个 max_allowed_packet 变量,控制其通信缓冲区的最大大小。要将 max_allowed_packet 变量设置为 16MB,可以使用以下任一命令:

mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M

第一个命令指定字节值。第二个命令指定兆字节值。对于取数值的变量,可以使用 KMG 后缀,表示 1024、10242 或 10243 的乘数。(例如,当用于设置 max_allowed_packet 时,这些后缀表示千字节、兆字节或吉字节单位。)从 MySQL 8.0.14 开始,还可以使用 TPE 后缀,表示 10244、10245 或 10246 的乘数。后缀字母可以是大写或小写。

在选项文件中,变量设置不带有前导破折号:

[mysql]
max_allowed_packet=16777216

或:

[mysql]
max_allowed_packet=16M

如果您喜欢,可以在选项名称中使用破折号代替下划线。以下选项组是等效的。它们都将服务器的密钥缓冲区大小设置为 512MB:

[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M

可以在程序调用时使用后缀指定值乘数,但不能在运行时使用 SET 设置值。另一方面,在 SET 中,可以使用表达式分配变量的值,这在服务器启动时设置变量时不成立。例如,以下第一行在程序调用时是合法的,但第二行不是:

$> mysql --max_allowed_packet=16M
$> mysql --max_allowed_packet=16*1024*1024

相反,以下第二行在运行时是合法的,但第一行不是:

mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;