int
mysql_options4(MYSQL *mysql,
enum mysql_option option,
const void *arg1,
const void *arg2)
mysql_options4()
类似于 mysql_options()
,但它有一个额外的第四个参数,这样就可以为第二个参数中指定的选项传递两个值。
以下列表描述了允许的选项、它们的效果以及如何使用 arg1
和 arg2
。
-
MYSQL_OPT_CONNECT_ATTR_ADD
(参数类型:char *, char *
)此选项将一个属性键值对添加到当前连接属性集中,以便在连接时传递给服务器。这两个参数都是指向以 null 结尾的字符串的指针。第一个和第二个字符串分别表示键和值。如果键为空或在当前连接属性集中已经存在,则会发生错误。键名与现有键的比较区分大小写。
以下划线 (
_
) 开头的键名保留供内部使用,不应由应用程序创建。此约定允许 MySQL 引入新的属性,而不会与应用程序属性发生冲突。mysql_options4()
对它接受的连接属性数据总大小限制为 64KB。对于导致超过此限制的调用,会发生CR_INVALID_PARAMETER_NO
错误。属性大小限制检查也发生在服务器端。有关详细信息,请参阅 性能模式连接属性表,它还描述了性能模式如何通过session_connect_attrs
和session_account_connect_attrs
表来公开连接属性。另请参阅
mysql_options()
函数描述中有关MYSQL_OPT_CONNECT_ATTR_RESET
和MYSQL_OPT_CONNECT_ATTR_DELETE
选项的描述。 -
MYSQL_OPT_USER_PASSWORD
(参数类型:unsigned int *, char *
)此选项指定多因素身份验证因子 (请参阅 多因素身份验证) 的密码。
第一个参数指向一个
unsigned int
变量,该变量应该具有 1、2 或 3 的值,以指示指定密码的因子。第二个参数指向提供密码值的字符字符串。此选项是在 MySQL 8.0.27 中添加的。
-
指定了重复的属性名称。
-
键名为空或键值连接属性数据量超过 64KB 限制。
-
内存不足。
此示例演示指定连接属性的调用
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_CONNECT_ATTR_RESET, 0);
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key1", "value1");
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key2", "value2");
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key3", "value3");
mysql_options(&mysql,MYSQL_OPT_CONNECT_ATTR_DELETE, "key1");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}