son servicios servicio que nombre los iniciar desde cuales como automaticamente arrancar activar mysql client autocommit

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:

  1. Antes de hacer un INSERT , siempre emita un BEGIN; declaración. Esto desactivará la confirmación automática. Tendrá que hacer un COMMIT; una vez que desee que sus datos se conserven en la base de datos.

  2. Utilice autocommit=0; Cada vez que instancia una conexión de base de datos.

  3. Para una configuración global, agregue una variable autocommit=0 en su archivo de configuración my.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