sql >> Database >  >> RDS >> Mysql

Hoe schakel ik autocommit uit voor een MySQL-client?

Misschien is de beste manier om een ​​script te schrijven dat de mysql-opdrachtregelclient start en vervolgens automatisch de gewenste sql uitvoert voordat het de controle aan u overdraagt.

linux wordt geleverd met een applicatie genaamd 'expect'. het werkt op zo'n manier samen met de shell dat het uw toetsaanslagen nabootst. het kan worden ingesteld om mysql te starten, wacht tot u uw wachtwoord invoert. voer verdere opdrachten uit zoals SET autocommit = 0; ga dan naar de interactieve modus zodat je elke gewenste opdracht kunt uitvoeren.

voor meer informatie over het commando SET autocommit = 0; zie.. http://dev.mysql. com/doc/refman/5.0/en/innodb-transaction-model.html

Ik gebruik verwacht in te loggen op een opdrachtregelhulpprogramma in mijn geval, het start ssh, maakt verbinding met de externe server, start de toepassing voert mijn gebruikersnaam en wachtwoord in en geeft de controle aan mij over. scheelt me ​​een hoop typen :)

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

Gelijkstroom

Verwacht script van Michael Hinds

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

verwachten is behoorlijk krachtig en kan het leven een stuk gemakkelijker maken, zoals in dit geval.

als je het script wilt laten draaien zonder te bellen, gebruik dan de shebang-regel

voeg dit in als de eerste regel in je script (hint:gebruik which expect om de locatie van uw verwachte uitvoerbare bestand te vinden)

#! /usr/bin/expect

verander dan de rechten van je script met..

chmod 0744 myscript

bel dan het script

./myscript

Gelijkstroom



  1. Unieke beperking van Postgres versus index

  2. Beverly Hills 90210 en ZIP+4:omgaan met adressen in gegevensmodellen

  3. Een ander PostgreSQL-commitfest beheren

  4. De kunst van het aggregeren van gegevens in SQL van eenvoudige tot glijdende aggregaties