mysql_library_init() - mysql/mysql.h
Call this function to initialize the MySQL library before you
call any other MySQL function, whether your application is a
regular client program or uses the embedded server. If the
application uses the embedded server, this call starts the
server and initializes any subsystems (mysys,
InnoDB, and so forth) that the server uses.mysysInnoDBAfter your application is done using the MySQL library, call
mysql_library_end() to clean up.
See Section 25.8.7.40, “mysql_library_end()”.mysql_library_end()mysql_library_end()Section 25.8.7.40, “mysql_library_end()”The choice of whether the application operates as a regular
client or uses the embedded server depends on whether you use
the libmysqlclient or
libmysqld library at link time to produce the
final executable. For additional information, see
Section 25.8.6, “C API Function Overview”.libmysqlclientlibmysqldSection 25.8.6, “C API Function Overview”In a nonmulti-threaded environment, the call to
mysql_library_init() may be
omitted, because mysql_init()
will invoke it automatically as necessary. However,
mysql_library_init() is not
thread-safe in a multi-threaded environment, and thus neither is
mysql_init(), which calls
mysql_library_init(). You must
either call mysql_library_init()
prior to spawning any threads, or else use a mutex to protect
the call, whether you invoke
mysql_library_init() or
indirectly through mysql_init().
Do this prior to any other client library call.mysql_library_init()mysql_library_init()mysql_init()mysql_init()mysql_library_init()mysql_library_init()mysql_init()mysql_init()mysql_library_init()mysql_library_init()mysql_library_init()mysql_library_init()mysql_library_init()mysql_library_init()mysql_init()mysql_init()The argc and argv
arguments are analogous to the arguments to
main(), and enable passing of options to the
embedded server. For convenience, argc may be
0 (zero) if there are no command-line
arguments for the server. This is the usual case for
applications intended for use only as regular (nonembedded)
clients, and the call typically is written as
mysql_library_init(0, NULL,
NULL).argcargvmain()argc0mysql_library_init(0, NULL,
NULL)mysql_library_init(0, NULL,
NULL)#include
#include
int main(void) {
if (mysql_library_init(0, NULL, NULL)) {
fprintf(stderr, "could not initialize MySQL library
");
exit(1);
}
/* Use any MySQL API functions here */
mysql_library_end();
return EXIT_SUCCESS;
}When arguments are to be passed (argc is
greater than 0), the first element of
argv is ignored (it typically contains the
program name).
mysql_library_init() makes a
copy of the arguments so it is safe to destroy
argv or groups after the
call.argc0argvmysql_library_init()mysql_library_init()argvgroupsFor embedded applications, if you want to connect to an external
server without starting the embedded server, you have to specify
a negative value for argc.argcThe groups argument is an array of strings
that indicate the groups in option files from which to read
options. See Section 5.2.6, “Using Option Files”. Make the final
entry in the array NULL. For convenience, if
the groups argument itself is
NULL, the [server] and
[embedded] groups are used by default.groupsSection 5.2.6, “Using Option Files”NULLgroupsNULL[server][embedded]#include
#include
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_library_init(sizeof(server_args) / sizeof(char *),
server_args, server_groups)) {
fprintf(stderr, "could not initialize MySQL library
");
exit(1);
}
/* Use any MySQL API functions here */
mysql_library_end();
return EXIT_SUCCESS;
}
Syntax
int mysql_library_init(int argc, char **argv, char
**groups)
Example
#include
#include
int main(void) {
if (mysql_library_init(0, NULL, NULL)) {
fprintf(stderr, "could not initialize MySQL library\n");
exit(1);
}
/* Use any MySQL API functions here */
mysql_library_end();
return EXIT_SUCCESS;
}
Output / Return Value
Zero for success. Nonzero if an error occurred.
Limitations
Alternatives / See Also
Reference