[MySQL参数取值] Status取值ERROR 1193 (HY000): Unknown system variable 'Innodb_buffer_pool_read_requests'

博客探讨了variables和status参数取值的问题,指出variables参数值可通过select @@xx取值,而status参数不行,并提出疑问。

variables参数值,可以通过 select @@xx取值,如下:

 

mysql> show variables like 'innodb_buffer_pool_size';
+-------------------------+-------------+
| Variable_name           | Value       |
+-------------------------+-------------+
| innodb_buffer_pool_size | 22020096000 |
+-------------------------+-------------+
1 row in set (0.00 sec)


mysql> select @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
|               22020096000 |
+---------------------------+
1 row in set (0.00 sec)


mysql>

 

 

 

 

 

 

而status参数就不行,why?

 

mysql> show status like 'Innodb_buffer_pool_read_requests';
+----------------------------------+-------------+
| Variable_name                    | Value       |
+----------------------------------+-------------+
| Innodb_buffer_pool_read_requests | 15551159458 |
+----------------------------------+-------------+
1 row in set (0.00 sec)


mysql> select @@Innodb_buffer_pool_read_requests;
ERROR 1193 (HY000): Unknown system variable 'Innodb_buffer_pool_read_requests'
mysql> 

 

 

 

 

MariaDB 中出现 `unknown variable 'innodb_large_prefix=1'` 错误的原因是该参数在 MariaDB 的某些版本中并不被支持,或者配置方式存在差异。MySQL 和 MariaDB 虽然兼容性较高,但在部分 InnoDB 参数的支持上存在区别。 ### 原因分析 - **参数名称拼写错误**:用户可能在配置文件中将 `innodb_large_prefix` 错误地拼写为 `innodb_large_perfix`,这是导致“未知变量”错误的直接原因[^3]。 - **MariaDB 版本限制**:MariaDB 在某些版本中并未完全支持 MySQL 的 `innodb_large_prefix` 参数。例如,早期版本的 MariaDB 使用 `innodb_file_format` 和行格式(如 `ROW_FORMAT=dynamic`)来控制索引前缀长度限制。 - **InnoDB 文件格式与行格式要求**:即使支持该参数,也需要同时设置 `innodb_file_format=BARRACUDA` 以及使用 `ROW_FORMAT=DYNAMIC` 或 `COMPRESSED` 才能生效[^1]。 ### 解决方案 1. **检查参数拼写**: 确保在配置文件中正确拼写 `innodb_large_prefix`,而不是 `innodb_large_perfix`。 2. **确认 MariaDB 版本**: 检查当前使用的 MariaDB 版本是否支持 `innodb_large_prefix` 参数。MariaDB 10.2 及以上版本逐步引入了对该参数的支持。 3. **修改配置文件**: 如果版本支持,可在 `my.cnf` 或 `my.ini` 中添加以下配置: ```ini [mysqld] innodb_large_prefix=ON innodb_file_format=Barracuda innodb_default_row_format=dynamic ``` 4. **重启 MariaDB 服务**: 修改配置后,需重启 MariaDB 服务使更改生效。 5. **验证配置是否生效**: 登录 MariaDB 后执行以下命令验证参数状态: ```sql SHOW VARIABLES LIKE 'innodb_large_prefix'; SHOW VARIABLES LIKE 'innodb_file_format'; ``` 6. **替代方法(适用于不支持版本)**: 若 MariaDB 不支持 `innodb_large_prefix`,可通过定义索引时指定较小的前缀长度(如 `CREATE INDEX idx ON table(column(255))`)或升级到支持该参数的版本来解决。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值