mysql 配置选项是否接受 - 而不是 _?

fox*_*ot9 5 mysql mysql-5.7

Mysql 5.7 Documentation提到innodb_buffer_pool_instances可以设置/etc/mysql/mysqld.conf.d/mysqld.cnf如下:

[mysqld]
innodb_buffer_pool_instances    = 16
Run Code Online (Sandbox Code Playgroud)

但是,现有设置使用 mysql 配置如下(在 中传递/etc/mysql/mysqld.conf.d/mysqld.cnf):

[mysqld]
innodb-buffer-pool-instances    = 16
Run Code Online (Sandbox Code Playgroud)

它似乎正在发挥作用。

mysql 配置选项是否接受-而不是_变量,还是我在这里遗漏了一些东西?

Bil*_*win 3

https://dev.mysql.com/doc/refman/8.0/en/command-line-options.html说:

在选项名称中,破折号 (-) 和下划线 (_) 可以互换使用。例如,--skip-grant-tables 和 --skip_grant_tables 是等效的。(但是,前导破折号不能作为下划线给出。)

当您在选项文件中使用选项以及命令行标志时,这适用于选项。

但是,在 SQL 查询中使用选项变量(例如 in )时,SET GLOBAL read_only=ON必须仅使用下划线。即使将变量放在反引号中也不允许使用连字符。

mysql> set global `read_only`=ON;
Query OK, 0 rows affected (0.00 sec)

mysql> set global `read-only`=ON;
ERROR 1193 (HY000): Unknown system variable 'read-only'

mysql> select @@`read_only`;
+---------------+
| @@`read_only` |
+---------------+
|             1 |
+---------------+
1 row in set (0.01 sec)

mysql> select @@`read-only`;
ERROR 1193 (HY000): Unknown system variable 'read-only'
Run Code Online (Sandbox Code Playgroud)