MySQL参数解析resultset_metadata

resultset_metadata 是 MySQL 8.0.3 版本引入的一个参数,在MySQL Server返回查询结果给客户端时,用于控制是否返回结果集的元数据。

  • 作用范围:会话级(session)
  • 取值范围:FULL,NONE
  • 默认值:FULL

FULL表示返回数据集元数据,NONE表示不返回数据集元数据。

对于某些不支持将数据集元数据是否返回设置为可选的客户端,比如自带的mysql命令,设置该参数为NONE时,将返回一个错误,如下:

mysql> set resultset_metadata=NONE;
ERROR 3640 (HY000): The client doesn't support optional metadata transfer

resultset_metadata 参数通常对MySQL的连接驱动有效,比如MySQL的C API,如果设置resultset_metadata=NONE,那么C API的如下函数,将返回NULL。

  • mysql_fetch_field()
  • mysql_fetch_field_direct()
  • mysql_fetch_fields()

如何检查一个结果集里面是否包含元数据,可通过C API函数 mysql_result_metadata(),它返回的值有两个,如下所示,通过这两个值就能知道结果集中是否包含元数据:

  • RESULTSET_METADATA_FULL
  • RESULTSET_METADATA_NONE

发表评论