mysql.h


Función mysql_options()

int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)

Puede usarse para activar opciones de conexión extra y afectar al comportamiento de una conexión. Esta función puede ser llamada muchas veces para cambiar varias opciones.

mysql_options() debe ser llamada después de mysql_init() y antes de mysql_connect() o mysql_real_connect().

El argumento option es la opción que se quiere activar; el argumento arg es el valor de la opción. Si la opción es un entero, entonces arg debe apuntar al valor del entero.

Posible valores de opciones:

Opción Tipo de argumento Función
MYSQL_INIT_COMMAND char * Comando a ejecutar cuando se conecte al servidor MySQL. Será reejecutado automáticamente cuando se reconecte.
MYSQL_OPT_COMPRESS Not used Usar el protocolo comprimido cliente/servidor.
MYSQL_OPT_CONNECT_TIMEOUT unsigned int * Tiempo límite para la conexión en segundos.
MYSQL_OPT_LOCAL_INFILE puntero opcional a uint Si no se proporciona un puntero o si el puntero apunta a un unsigned int != 0 el comando LOAD LOCAL INFILE estará permitido.
MYSQL_OPT_NAMED_PIPE No usado Usar tuberías con nombre para conectar a un servidor MySQL en NT.
MYSQL_OPT_PROTOCOL unsigned int * Tipo de protocolo a usar. Debe ser uno de los valores enumerados mysql_protocol_type definido en 'mysql.h'. Nuevo en 4.1.0.
MYSQL_OPT_READ_TIMEOUT unsigned int * Tiempo límite para lecturas desde el servidor (actualmente sólo funciona en Windows con conexiones TCP/IP). Nuevo en 4.1.1.
MYSQL_OPT_WRITE_TIMEOUT unsigned int * Tiempo límite para escrituras en el servidor (actualmente sólo funciona en Windows con conexiones TCP/IP). Nuevo en 4.1.1.
MYSQL_READ_DEFAULT_FILE char * Lee las opciones desde el fichero nombrado en lugar de hacerlo desde 'my.cnf'.
MYSQL_READ_DEFAULT_GROUP char * Lee las opciones desde el grupo nombrado de 'my.cnf' o desde el fichero especificado con MYSQL_READ_DEFAULT_FILE.
MYSQL_REPORT_DATA_TRUNCATION my_bool * Activa o desactiva informes de errores de truncado de datos para sentencias preparadas vía MYSQL_BIND.error. (Por defecto: desactivada) Nuevo en 5.0.3.
MYSQL_SECURE_AUTH my_bool* Si para conectar al servidor no está soportado el nuevo tipo de contraseñas 4.1.1. Nuevo en 4.1.1.
MYSQL_SET_CHARSET_DIR char* El nombre de camino del directorio que contiene los ficheros de definición de juegos de caracteres.
MYSQL_SET_CHARSET_NAME char* El nombre del juego de caracteres a usar como juego de caracteres por defecto.
MYSQL_SHARED_MEMORY_BASE_NAME char* Nombre del objeto de memoria compartida para comunicarse con el servidor. Debe ser la misma que para la opción -shared-memory-base-name usada para el servidor mysqld al que se quiere conectar. Nuevo en 4.1.0.

Hay que tener en cuenta que el grupo del cliente siempre es leído si se usa MYSQL_READ_DEFAULT_FILE o MYSQL_READ_DEFAULT_GROUP.

El grupo especificado en el fichero de opciones debe contener las opciones siguientes:

Opción Descripción
connect-timeout Tiempo límite de conexión en segundos. En Linux este tiempo también se usa para esperar la primera respuesta del servidor.
compress Usar el protocolo cliente/servidor comprimido.
database Conectar a esta base de datos si no se especifica una en el comando de conexión.
debug Opciones de depuración.
disable-local-infile Deshabilitar el uso de LOAD DATA LOCAL.
host Nombre de ordenador por defecto.
init-command Comando a ejecutar cuando se conecte al servidor MySQL. Será reejecutado automáticamente cuando se reconecte.
interactive-timeout Lo mismo que especificar CLIENT_INTERACTIVE en mysql_real_connect().
local-infile[=(0|1)] Si no hay argumento o si argumento != 0 se habilita el uso de LOAD DATA LOCAL.
max_allowed_packet Tamaño máximo de paquete que el cliente puede leer del servidor.
multi-results Permite múltiples conjuntos de resultados desde ejecuciones de sentencias múltiples o procedimientos de almacenamiento. Nuevo en 4.1.1.
multi-statements Permite al cliente enviar múltiples sentencias en una única cadena (separadas por ';'). Nuevo en 4.1.9.
password Contraseña por defecto.
pipe Usar tuberías con nombre para conectar al servidor MySQL en NT.
protocol={TCP | SOCKET | PIPE | MEMORY} Protocolo a usar cuando se conecte al servidor (Nuevo en 4.1)
port Número de puerto por defecto.
return-found-rows Hace que mysql_info() devuelva las filas encontradas en lugar de las actualizadas cuando se usa UPDATE.
shared-memory-base-name=name Nombre de memoria compartida a usar para conectar al servidor (por defecto es "MYSQL"). Nuevo en MySQL 4.1.
socket Fichero socket por defecto.
user Usuario por defecto.

Nótese que timeout ha sido remplazado por connect-timeout, pero timeout seguirá funcionado durante todavía.

Valores de retorno

Cero si tiene éxito. Distinto de cero si se usa una opción desconocida.

Ejemplo

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, "Error al conectar a la base de datos: Error: %s\n",
           mysql_error(&mysql));
 }

Este código pide al cliente que use el protocolo cliente/servidor comprimido y lee las opciones adicionales desde la sección odbc del fichero 'my.cnf'.