27.7.13.3 mysql_load_plugin()

struct st_mysql_client_plugin *mysql_load_plugin(MYSQL *mysql, const char *name, int type, int argc, ...)

Description

加载由名称和类型指定的 MySQLClient 端插件。如果类型无效或无法加载插件,则会发生错误。

无法加载相同类型的多个插件。如果您尝试加载已加载类型的插件,则会发生错误。

指定参数,如下所示:

  • mysql:指向MYSQL结构的指针。插件 API 不需要连接到 MySQL 服务器,但是必须正确初始化此结构。该结构用于获取与连接有关的信息。

  • name:要加载的插件的名称。

  • type:要加载的插件的类型,或-1 以禁用类型检查。如果 type 不为-1,则仅考虑与该类型匹配的插件进行加载。

  • argc:以下参数的数目(如果没有,则为 0)。以下任何参数的解释取决于插件类型。

导致加载插件的另一种方法是将LIBMYSQL_PLUGINS环境变量设置为以分号分隔的插件名称的列 table。例如:

export LIBMYSQL_PLUGINS="myplugin1;myplugin2"

当 Client 端程序调用mysql_library_init()时,将加载由LIBMYSQL_PLUGINS命名的插件。如果加载这些插件时出现问题,则不会报告任何错误。

可以将LIBMYSQL_PLUGIN_DIR环境变量设置为要在其中查找 Client 端插件的目录的路径名。此变量有两种使用方式:

  • 在 Client 端插件预加载期间,--plugin-dir选项的值不可用,因此除非插件位于硬连线的默认目录中,否则 Client 端插件加载失败。如果插件位于其他位置,则可以将LIBMYSQL_PLUGIN_DIR环境变量设置为正确的目录,以使插件预加载成功。

  • 对于显式 Client 端插件加载,mysql_load_plugin()mysql_load_plugin_v() C API 函数使用LIBMYSQL_PLUGIN_DIR值(如果存在)并且未提供--plugin-dir选项。如果给出--plugin-dir,则mysql_load_plugin()mysql_load_plugin_v()忽略LIBMYSQL_PLUGIN_DIR

Return Values

指向插件的指针(如果已成功加载)。 NULL如果发生错误。

Errors

要检查错误,请调用mysql_error()mysql_errno()函数。参见第 27.7.6.15 节,“ mysql_error()”第 27.7.6.14 节“ mysql_errno()”

Example
MYSQL mysql;

if(!mysql_load_plugin(&mysql, "myplugin",
                      MYSQL_CLIENT_AUTHENTICATION_PLUGIN, 0))
{
    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
    exit(-1);
}
See Also

另请参见第 27.7.13.3 节“ mysql_load_plugin()”第 27.7.6.15 节,“ mysql_error()”第 27.7.6.14 节“ mysql_errno()”