如果希望允许应用程序链接到嵌入式MySQL服务器库,必须使用mysql_server_init()和mysql_server_end()函数。请参见25.1节,“libmysqld,嵌入式MySQL服务器库”。
但是,要想提供改进的内存管理,即使是对与“-lmysqlclient”而不是与“-lmysqld”链接的程序,也应包含启用和结束库使用的调用。mysql_library_init()和mysql_library_end()函数可用于该目的。它们实际上是使其等效于mysql_server_init()和mysql_server_end()的#define符号,但它们的名称更清楚地指明,无论应用程序使用的是libmysqlclient或libmysqld,开始使用或结束MySQL C API库的使用时,应调用它们。关于更多信息,请参见25.2.2节,“C API函数概述”。
int mysql_server_init(int argc, char **argv, char **groups)
描述
调用任何其他MySQL函数之前,必须在使用嵌入式服务器的程序中调用该函数。它将启动服务器,并初始化服务器使用的任何子系统(mysys、InnoDB等)。如果未调用该函数,对mysql_init()的下一次调用将执行mysql_server_init()。如果你正在使用与MySQL一起提供的DBUG软件包,应在调用了my_init()之后调用它。
对于main()的参量,argc和argv是类似的参量。argv的第1个元素将被忽略(典型情况下,它包含程序名)。为了方便起见,如果没有针对服务器的命令行参量,argc可以是0。mysql_server_init()将复制参量,以便能够在调用之后安全地摧毁argv或groups。
如果打算连接到外部服务器而不启动嵌入式服务器,应为argc指定负值。
“groups”中以Null终结的字符串列表选择了选项文件中的活动“groups”。请参见4.3.2节,“使用选项文件”。为了方便起见,groups可以是NULL,在该情况下,[server]和[embedded]组是活动的。
示例:
#include <mysql.h>
#include <stdlib.h>
static char *server_args[] = {
"this_program", /* this string is not used */
"--datadir=.",
"--key_buffer_size=32M"
};
static char *server_groups[] = {
"embedded",
"server",
"this_program_SERVER",
(char *)NULL
};
int main(void) {
if (mysql_server_init(sizeof(server_args) / sizeof(char *),
server_args, server_groups))
exit(1);
/* Use any MySQL API functions here */
mysql_server_end();
return EXIT_SUCCESS;
}
返回值
如果OK,返回0。如果出现错误,返回1。
void mysql_server_end(void)
描述
在所有其他MySQL函数后,在程序中必须调用该函数一次。它将关闭嵌入式服务器。
返回值
无。