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'.