int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)
描述
可用于设置额外的连接选项,并影响连接的行为。可多次调用该函数来设置数个选项。
应在mysql_init()之后、以及mysql_connect()或mysql_real_connect()之前调用mysql_options()。
选项参量指的是你打算设置的选项。Arg参量是选项的值。如果选项是整数,那么arg应指向整数的值。
可能的选项值:
选项 |
参量类型 |
功能 |
MYSQL_INIT_COMMAND |
char * |
连接到MySQL服务器时将执行的命令。再次连接时将自动地再次执行。 |
MYSQL_OPT_COMPRESS |
未使用 |
使用压缩客户端/服务器协议 |
MYSQL_OPT_CONNECT_TIMEOUT |
unsigned int * |
以秒为单位的连接超时。 |
MYSQL_OPT_GUESS_CONNECTION |
未使用 |
对于与libmysqld链接的应用程序,允许库“猜测”是否使用嵌入式服务器或远程服务器。“猜测”表示,如果设置了主机名但不是本地主机,将使用远程服务器。该行为是默认行为。 可使用MYSQL_OPT_USE_EMBEDDED_CONNECTION 和MYSQL_OPT_USE_REMOTE_CONNECTION覆盖它。对于与libmysqlclient链接的应用程序,该选项将被忽略。 |
MYSQL_OPT_LOCAL_INFILE |
指向单元的可选指针 |
如果未给定指针,或指针指向“unsigned int != 0”,将允许命令LOAD LOCAL INFILE。 |
MYSQL_OPT_NAMED_PIPE |
未使用 |
使用命名管道连接到NT平台上的MySQL服务器。 |
MYSQL_OPT_PROTOCOL |
unsigned int * |
要使用的协议类型。应是mysql.h中定义的mysql_protocol_type的枚举值之一。 |
MYSQL_OPT_READ_TIMEOUT |
unsigned int * |
从服务器读取信息的超时(目前仅在Windows平台的TCP/IP连接上有效)。 |
MYSQL_OPT_RECONNECT |
my_bool * |
如果发现连接丢失,启动或禁止与服务器的自动再连接。从MySQL 5.0.3开始,默认情况下禁止再连接,这是5.0.13中的新选项,提供了一种以显式方式设置再连接行为的方法。 |
MYSQL_OPT_SET_CLIENT_IP |
char * |
对于与libmysqld链接的应用程序(具备鉴定支持特性的已编译libmysqld),它意味着,出于鉴定目的,用户将被视为从指定的IP地址(指定为字符串)进行连接。对于与libmysqlclient链接的应用程序,,该选项将被忽略。 |
MYSQL_OPT_USE_EMBEDDED_CONNECTION |
未使用 |
对于与libmysqld链接的应用程序,对于连接来说,它将强制使用嵌入式服务器。对于与libmysqlclient链接的应用程序,,该选项将被忽略。 |
MYSQL_OPT_USE_REMOTE_CONNECTION |
未使用 |
对于与libmysqld链接的应用程序,对于连接来说,它将强制使用远程服务器。对于与libmysqlclient链接的应用程序,,该选项将被忽略。 |
MYSQL_OPT_USE_RESULT |
未使用 |
不使用该选项。 |
MYSQL_OPT_WRITE_TIMEOUT |
unsigned int * |
写入服务器的超时(目前仅在Windows平台的TCP/IP连接上有效)。 |
MYSQL_READ_DEFAULT_FILE |
char * |
从命名选项文件而不是从my.cnf读取选项。 |
MYSQL_READ_DEFAULT_GROUP |
char * |
从my.cnf或用MYSQL_READ_DEFAULT_FILE指定的文件中的命名组读取选项。 |
MYSQL_REPORT_DATA_TRUNCATION |
my_bool * |
通过MYSQL_BIND.error,对于预处理语句,允许或禁止通报数据截断错误(默认为禁止)。 |
MYSQL_SECURE_AUTH |
my_bool* |
是否连接到不支持密码混编功能的服务器,在MySQL 4.1.1和更高版本中,使用了密码混编功能。 |
MYSQL_SET_CHARSET_DIR |
char* |
指向包含字符集定义文件的目录的路径名。 |
MYSQL_SET_CHARSET_NAME |
char* |
用作默认字符集的字符集的名称。 |
MYSQL_SHARED_MEMORY_BASE_NAME |
char* |
命名为与服务器进行通信的共享内存对象。应与你打算连接的mysqld服务器使用的选项“-shared-memory-base-name”相同。 |
注意,如果使用了MYSQL_READ_DEFAULT_FILE或MYSQL_READ_DEFAULT_GROUP,总会读取客户端组。
选项文件中指定的组可能包含下述选项:
选项 |
描述 |
connect-timeout |
以秒为单位的连接超时。在Linux平台上,该超时也用作等待服务器首次回应的时间。 |
compress |
使用压缩客户端/服务器协议。 |
database |
如果在连接命令中未指定数据库,连接到该数据库。 |
debug |
调试选项。 |
disable-local-infile |
禁止使用LOAD DATA LOCAL。 |
host |
默认主机名。 |
init-command |
连接到MySQL服务器时将执行的命令。再次连接时将自动地再次执行。 |
interactive-timeout |
等同于将CLIENT_INTERACTIVE指定为mysql_real_connect()。请参见25.2.3.51节,“mysql_real_connect()”。 |
local-infile[=(0|1)] |
如果无参量或参量!= 0,那么将允许使用LOAD DATA LOCAL。 |
max_allowed_packet |
客户端能够从服务器读取的最大信息包。 |
multi-results |
允许多语句执行或存储程序的多个结果集。 |
multi-statements |
允许客户端在1个字符串内发送多条语句。(由“;”隔开)。 |
password |
默认密码。 |
pipe |
使用命名管道连接到NT平台上的MySQL服务器。 |
protocol={TCP | SOCKET | PIPE | MEMORY} |
连接到服务器时将使用的协议。 |
port |
默认端口号。 |
return-found-rows |
通知mysql_info()返回发现的行,而不是使用UPDATE时更新的行。 |
shared-memory-base-name=name |
共享内存名称,用于连接到服务器(默认为"MYSQL")。 |
socket |
默认的套接字文件。 |
user |
默认用户。 |
注意,“timeout”(超时)已被“connect-timeout”(连接超时)取代,但为了保持向后兼容,在MySQL 5.1.2-alpha中仍支持“timeout”(超时)。
关于选项文件的更多信息,请参见4.3.2节,“使用选项文件”。
返回值
成功时返回0。如果使用了未知选项,返回非0值。
示例:
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
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));
}
该代码请求客户端使用压缩客户端/服务器协议,并从my.cnf文件的obdc部分读取额外选项。