mysql> show variables like '%timeout';
+-----------------------------------+----------+
| Variable_name | Value |
+-----------------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| mysqlx_connect_timeout | 30 |
| mysqlx_idle_worker_thread_timeout | 60 |
| mysqlx_interactive_timeout | 28800 |
| mysqlx_port_open_timeout | 0 |
| mysqlx_read_timeout | 30 |
| mysqlx_wait_timeout | 28800 |
| mysqlx_write_timeout | 60 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
+-----------------------------------+----------+
20 rows in set, 1 warning (0.00 sec)
enum mysql_option {
MYSQL_OPT_CONNECT_TIMEOUT,
MYSQL_OPT_COMPRESS,
MYSQL_OPT_NAMED_PIPE,
MYSQL_INIT_COMMAND,
MYSQL_READ_DEFAULT_FILE,
MYSQL_READ_DEFAULT_GROUP,
MYSQL_SET_CHARSET_DIR,
MYSQL_SET_CHARSET_NAME,
MYSQL_OPT_LOCAL_INFILE,
MYSQL_OPT_PROTOCOL,
MYSQL_SHARED_MEMORY_BASE_NAME,
MYSQL_OPT_READ_TIMEOUT,
MYSQL_OPT_WRITE_TIMEOUT,
MYSQL_OPT_USE_RESULT,
MYSQL_REPORT_DATA_TRUNCATION,
MYSQL_OPT_RECONNECT,
MYSQL_PLUGIN_DIR,
MYSQL_DEFAULT_AUTH,
MYSQL_OPT_BIND,
MYSQL_OPT_SSL_KEY,
MYSQL_OPT_SSL_CERT,
MYSQL_OPT_SSL_CA,
MYSQL_OPT_SSL_CAPATH,
MYSQL_OPT_SSL_CIPHER,
MYSQL_OPT_SSL_CRL,
MYSQL_OPT_SSL_CRLPATH,
MYSQL_OPT_CONNECT_ATTR_RESET,
MYSQL_OPT_CONNECT_ATTR_ADD,
MYSQL_OPT_CONNECT_ATTR_DELETE,
MYSQL_SERVER_PUBLIC_KEY,
MYSQL_ENABLE_CLEARTEXT_PLUGIN,
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
MYSQL_OPT_MAX_ALLOWED_PACKET,
MYSQL_OPT_NET_BUFFER_LENGTH,
MYSQL_OPT_TLS_VERSION,
MYSQL_OPT_SSL_MODE,
MYSQL_OPT_GET_SERVER_PUBLIC_KEY,
MYSQL_OPT_RETRY_COUNT,
MYSQL_OPT_OPTIONAL_RESULTSET_METADATA,
MYSQL_OPT_SSL_FIPS_MODE,
MYSQL_OPT_TLS_CIPHERSUITES,
MYSQL_OPT_COMPRESSION_ALGORITHMS,
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL
};
Propiedad | Valor |
---|---|
Formato de línea de comandos | --wait-timeout=# |
Variable de sistema | wait_timeout |
Alcance | Sesión global |
Dinámica | si |
SET_VAR Se aplica una sugerencia |
No |
Tipo | Entero |
Valor por defecto | 28800 |
Valor mínimo | 1 |
Valor máximo (otros) | 31536000 |
Valor máximo (Windows) | 2147483 |
La cantidad de segundos que el servidor espera la actividad en una conexión no interactiva antes de cerrarla.
En el inicio del hilo, el wait_timeout
valor de la sesión se inicializa a partir del wait_timeout
valor global o del interactive_timeout
valor global , según el tipo de cliente (como se define en la CLIENT_INTERACTIVE
opción de conexión a mysql_real_connect()
). Vea también interactive_timeout
.
28.7.27 Control de reconexión automática API C
La biblioteca cliente de MySQL puede realizar una reconexión automática al servidor si encuentra que la conexión está inactiva cuando intenta enviar una declaración al servidor para que se ejecute . Si la reconexión automática está habilitada, la biblioteca intenta una vez volver a conectarse al servidor y enviar la declaración nuevamente.
La reconexión automática está deshabilitada de forma predeterminada.
Si es importante que su aplicación sepa que la conexión se ha interrumpido (para que pueda salir o tomar medidas para ajustar la pérdida de información de estado), asegúrese de que la reconexión automática esté desactivada. Para asegurar esto, llame mysql_options()
con la MYSQL_OPT_RECONNECT
opción:
bool reconnect = 0;
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
Si la conexión se ha interrumpido, el efecto de mysql_ping()
depende del estado de reconexión automática. Si la reconexión automática está habilitada, mysql_ping()
realiza una reconexión. De lo contrario, devuelve un error.
Algunos programas cliente pueden proporcionar la capacidad de controlar la reconexión automática. Por ejemplo, mysql se vuelve a conectar de forma predeterminada, pero la --skip-reconnect
opción se puede utilizar para suprimir este comportamiento.
Si se produce una reconexión automática (por ejemplo, como resultado de una llamada mysql_ping()
), no hay ninguna indicación explícita de ello. Para verificar la reconexión, llame mysql_thread_id()
para obtener el identificador de conexión original antes de llamar mysql_ping()
, luego mysql_thread_id()
vuelva a llamar para ver si el identificador cambió.
La reconexión automática puede ser conveniente porque no necesita implementar su propio código de reconexión, pero si ocurre una reconexión, varios aspectos del estado de la conexión se restablecen en el lado del servidor y su aplicación no será notificada.
El estado relacionado con la conexión se ve afectado de la siguiente manera:
-
Las transacciones activas se revierten y se restablece el modo de confirmación automática.
-
Se liberan todos los bloqueos de la mesa.
-
Todas las
TEMPORARY
mesas están cerradas (y descartadas). -
Las variables del sistema de sesión se reinicializan a los valores de las variables del sistema global correspondientes, incluidas las variables del sistema que se establecen implícitamente mediante declaraciones como
SET NAMES
. -
Se pierden los ajustes de las variables de usuario.
-
Se emiten declaraciones preparadas.
-
HANDLER
las variables están cerradas. -
El valor de
LAST_INSERT_ID()
se restablece a 0. -
GET_LOCK()
Se liberan los bloqueos adquiridos con . -
Se
threads
pierde la asociación del cliente con la fila de la tabla Performance Schema que determina la instrumentación del subproceso de conexión. Si el cliente se vuelve a conectar después de una desconexión, la sesión se asocia con una nueva fila en lathreads
tabla y el estado de supervisión del hilo puede ser diferente. Consulte la Sección 26.12.19.5, “La tabla de subprocesos” .
Si se produce la reconexión, se vuelve a ejecutar cualquier instrucción SQL especificada llamando mysql_options()
con la MYSQL_INIT_COMMAND
opción.
Si la conexión se cae, es posible que la sesión asociada con la conexión en el lado del servidor aún se esté ejecutando si el servidor aún no ha detectado que el cliente ya no está conectado. En este caso, los bloqueos mantenidos por la conexión original todavía pertenecen a esa sesión, por lo que es posible que desee eliminarlo llamando mysql_kill()
.
void QSqlDatabase :: setConnectOptions (const QString & options = QString ())
Establece opciones específicas de la base de datos. Esto debe hacerse antes de que se abra la conexión o no tendrá ningún efecto (o puede cerrar () la conexión, llamar a esta función y abrir () la conexión nuevamente).
El formato de la cadena de opciones es una lista separada por punto y coma de nombres de opciones o pares opción = valor. Las opciones dependen del cliente de base de datos utilizado:
ODBC |
MySQL |
PostgreSQL |
|
|
|
DB2 |
OCIO |
TDS |
|
|
ninguna |
Interbase |
||
|
|
Ejemplos:
...
// MySQL connection
db.setConnectOptions("SSL_KEY=client-key.pem;SSL_CERT=client-cert.pem;SSL_CA=ca-cert.pem;CLIENT_IGNORE_SPACE=1"); // use an SSL connection to the server
if (!db.open()) {
db.setConnectOptions(); // clears the connect option string
...
}
...
// PostgreSQL connection
db.setConnectOptions("requiressl=1"); // enable PostgreSQL SSL connections
if (!db.open()) {
db.setConnectOptions(); // clear options
...
}
...
// ODBC connection
db.setConnectOptions("SQL_ATTR_ACCESS_MODE=SQL_MODE_READ_ONLY;SQL_ATTR_TRACE=SQL_OPT_TRACE_ON"); // set ODBC options
if (!db.open()) {
db.setConnectOptions(); // don't try to set this option
...
}
Consulte la documentación de la biblioteca cliente para obtener más información sobre las diferentes opciones.
Consulte también connectOptions ().