servicios - ¿Cómo desactivo la confirmación automática para un cliente MySQL?
nombre del servicio de mysql (7)
¿Te refieres a la consola de texto mysql? Entonces:
START TRANSACTION;
...
your queries.
...
COMMIT;
Es lo que yo recomiendo.
Sin embargo, si desea evitar escribir esto cada vez que necesite ejecutar este tipo de consulta, agregue lo siguiente a la sección [mysqld] de su archivo my.cnf.
init_connect=''set autocommit=0''
Sin embargo, esto establecería que la autocommit
esté desactivada para cada cliente.
Tengo una aplicación web que se ha escrito con el supuesto de que la confirmación automática está activada en la base de datos, por lo que no quiero hacer ningún cambio allí. Sin embargo, toda la documentación que puedo encontrar solo parece hablar sobre el uso de init_connect en la base de datos, es decir, una configuración global para todas las conexiones de clientes.
¿Hay alguna forma de configurar autocommit = 0 solo cuando se ejecuta mysql en una línea de comando de Linux (sin tener que escribirlo cada vez)?
En lugar de desactivar la confirmación automática en el momento de la restauración, ya puede volcar sus datos MySQL de una manera que incluya todas las declaraciones necesarias en su archivo SQL.
El parámetro de línea de comando para mysqldump es --no-autocommit
. También puede considerar agregar --opt
que establece una combinación de otros parámetros para acelerar las operaciones de restauración.
Aquí hay un ejemplo de una línea de comandos mysqldump completa cuando la uso, que contiene --no-autocommit
y --opt
:
mysqldump -hlocalhost -uMyUser -p''MyPassword'' --no-autocommit --opt --default-character-set=utf8 --quote-names MyDbName > dump.sql
Para detalles de estos parámetros vea la referencia de mysqldump
Esto es útil para verificar el estado de la confirmación automática;
select @@autocommit;
Lo haces de 3 maneras diferentes:
Antes de hacer un
INSERT
, siempre emita unBEGIN;
declaración. Esto desactivará la confirmación automática. Tendrá que hacer unCOMMIT;
una vez que desee que sus datos se conserven en la base de datos.Utilice
autocommit=0;
Cada vez que instancia una conexión de base de datos.Para una configuración global, agregue una variable
autocommit=0
en su archivo de configuraciónmy.cnf
en MySQL.
Para la confirmación automática, utilice el siguiente comando para asegurarse. Establecer a continuación en el archivo my.cnf
:
[mysqld]
autocommit=0
Parece que puede agregarlo a su ~ / .my.cnf, pero debe agregarse como un argumento a la bandera de comando de inicio en su sección [cliente], así:
[client]
init-command=''set autocommit=0''
Quizás la mejor manera es escribir un script que inicie el cliente de la línea de comandos de mysql y luego ejecute automáticamente cualquier sql que desee antes de que le entregue el control.
Linux viene con una aplicación llamada ''esperar''. interactúa con el shell de manera que imita sus pulsaciones de teclas. se puede configurar para iniciar mysql, espere a que ingrese su contraseña. ejecute comandos adicionales como SET autocommit = 0;
luego entra en modo interactivo para que puedas ejecutar cualquier comando que desees.
para más información sobre el comando SET autocommit = 0;
ver .. http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html
Espero iniciar sesión en una utilidad de línea de comandos en mi caso, se inicia ssh, se conecta al servidor remoto, inicia la aplicación, ingresa mi nombre de usuario y contraseña y luego me entrega el control. me ahorra montones de escribir :)
http://linux.die.net/man/1/expect
corriente continua
Esperar guión proporcionado por Michael Hinds
spawn /usr/local/mysql/bin/mysql
expect "mysql>"
send "set autocommit=0;/r"
expect "mysql>" interact
esperar es bastante poderoso y puede hacer la vida mucho más fácil como en este caso.
Si desea que el script se ejecute sin esperar, utilice la línea shebang
insértelo como la primera línea en su script (pista: use which expect
encontrar la ubicación de su ejecutable)
#! /usr/bin/expect
luego cambia los permisos de tu script con ..
chmod 0744 myscript
entonces llama al guion
./myscript
corriente continua