Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie deaktiviere ich Autocommit für einen MySQL-Client?

Vielleicht ist der beste Weg, ein Skript zu schreiben, das den mysql-Befehlszeilenclient startet und dann automatisch die gewünschte SQL ausführt, bevor es Ihnen die Kontrolle übergibt.

Linux wird mit einer Anwendung namens „expect“ geliefert. Es interagiert mit der Shell so, dass es Ihre Tastenanschläge nachahmt. Es kann eingestellt werden, mysql zu starten, warten Sie, bis Sie Ihr Passwort eingeben. Führen Sie weitere Befehle wie SET autocommit = 0; aus Wechseln Sie dann in den interaktiven Modus, damit Sie jeden gewünschten Befehl ausführen können.

für mehr über den Befehl SET autocommit = 0; siehe.. http://dev.mysql. com/doc/refman/5.0/en/innodb-transaction-model.html

Ich benutze Expect, um mich bei einem Befehlszeilendienstprogramm anzumelden. In meinem Fall startet es ssh, stellt eine Verbindung zum Remote-Server her, startet die Anwendung, gibt meinen Benutzernamen und mein Passwort ein und übergibt mir dann die Kontrolle. spart mir haufenweise Tipparbeit :)

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

DC

Erwarten Sie ein Skript von Michael Hinds

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

Expect ist ziemlich mächtig und kann das Leben viel einfacher machen, wie in diesem Fall.

wenn Sie möchten, dass das Skript ohne den Aufruf von Expect ausgeführt wird, verwenden Sie die Shebang-Zeile

fügen Sie dies als erste Zeile in Ihr Skript ein (Tipp:verwenden Sie which expect um den Speicherort Ihrer erwarteten ausführbaren Datei zu finden)

#! /usr/bin/expect

Ändern Sie dann die Berechtigungen Ihres Skripts mit..

chmod 0744 myscript

Rufen Sie dann das Skript auf

./myscript

DC