Mysql
 sql >> Database >  >> RDS >> Mysql

Come faccio a disattivare il commit automatico per un client MySQL?

Forse il modo migliore è scrivere uno script che avvii il client della riga di comando mysql e quindi esegua automaticamente qualsiasi sql desiderato prima che ti consegni il controllo.

linux viene fornito con un'applicazione chiamata 'expect'. interagisce con la shell in modo tale da imitare i tasti premuti. può essere impostato per avviare mysql, attendere che tu inserisca la tua password. eseguire ulteriori comandi come SET autocommit = 0; quindi vai in modalità interattiva in modo da poter eseguire qualsiasi comando desideri.

per ulteriori informazioni sul comando SET autocommit = 0; vedere.. http://dev.mysql. com/doc/refman/5.0/en/innodb-transaction-model.html

Uso Expect per accedere a un'utilità della riga di comando nel mio caso avvia ssh, si connette al server remoto, avvia l'applicazione, inserisce il mio nome utente e password, quindi mi trasferisce il controllo. mi fa risparmiare un sacco di digitazione :)

http://linux.die.net/man/1/expect

DC

Aspettati la sceneggiatura fornita da Michael Hinds

spawn /usr/local/mysql/bin/mysql 
expect "mysql>" 
send "set autocommit=0;\r" 
expect "mysql>" interact

aspettarsi è piuttosto potente e può rendere la vita molto più facile come in questo caso.

se vuoi eseguire lo script senza chiamare attendi usa la riga shebang

inserisci questo come prima riga nel tuo script (suggerimento:usa which expect per trovare la posizione del tuo eseguibile previsto)

#! /usr/bin/expect

quindi modifica i permessi del tuo script con..

chmod 0744 myscript

quindi chiama lo script

./myscript

DC