データベースで自動コミットがオンになっていることを前提に作成されたWebアプリがあるので、そこで変更を加えたくありません。ただし、私が見つけることができるすべてのドキュメントは、データベースでのinit_connectの使用、つまりすべてのクライアント接続のグローバル設定についてのみ説明しているようです。
Linuxコマンドラインでmysqlを実行しているときにautocommit=0を設定する方法はありますか(毎回入力する必要はありません)?
データベースで自動コミットがオンになっていることを前提に作成されたWebアプリがあるので、そこで変更を加えたくありません。ただし、私が見つけることができるすべてのドキュメントは、データベースでのinit_connectの使用、つまりすべてのクライアント接続のグローバル設定についてのみ説明しているようです。
Linuxコマンドラインでmysqlを実行しているときにautocommit=0を設定する方法はありますか(毎回入力する必要はありません)?
おそらく最良の方法は、mysqlコマンドラインクライアントを起動し、制御を渡す前に必要なSQLを自動的に実行するスクリプトを作成することです。
Linuxには「expect」というアプリケーションが付属しています。キーストロークを模倣するような方法でシェルと相互作用します。mysqlを起動するように設定できます。パスワードを入力するのを待ちます。次になどのコマンドをさらに実行SET autocommit = 0;
して、インタラクティブモードに移行し、必要なコマンドを実行できるようにします。
コマンドの詳細については、をSET autocommit = 0;
参照してください。http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html
私はexpectを使用してコマンドラインユーティリティにログインします。私の場合は、sshを起動し、リモートサーバーに接続し、アプリケーションを起動してユーザー名とパスワードを入力し、制御を私に渡します。タイピングの山を節約します:)
http://linux.die.net/man/1/expect
DC
MichaelHindsが提供するスクリプトを期待する
spawn /usr/local/mysql/bin/mysql
expect "mysql>"
send "set autocommit=0;\r"
expect "mysql>" interact
期待はかなり強力であり、この場合のように生活をはるかに楽にすることができます。
expectを呼び出さずにスクリプトを実行したい場合は、shebang行を使用してください
これをスクリプトの最初の行として挿入します(ヒント:which expect
期待する実行可能ファイルの場所を見つけるために使用します)
#! /usr/bin/expect
次に、スクリプトの権限を.で変更します。
chmod 0744 myscript
次に、スクリプトを呼び出します
./myscript
DC
これは3つの異なる方法で行います。
を実行する前に、必ずステートメントINSERT
を発行してください。BEGIN;
これにより、自動コミットがオフになります。COMMIT;
データをデータベースに永続化する場合は、一度実行する必要があります。
autocommit=0;
データベース接続をインスタンス化するたびに使用します。
グローバル設定の場合は、MySQLの構成ファイルにautocommit=0
変数を追加します。my.cnf
〜/ .my.cnfに追加できるようですが、次のように、[client]セクションのinit-commandフラグに引数として追加する必要があります。
[client]
init-command='set autocommit=0'
これは、自動コミットのステータスを確認するのに役立ちます。
select @@autocommit;
mysqlテキストコンソールを意味しますか?それで:
START TRANSACTION;
...
your queries.
...
COMMIT;
私がお勧めするものです。
ただし、この種のクエリを実行する必要があるたびにこれを入力することを避けたい場合は、my.cnfファイルの[mysqld]セクションに以下を追加してください。
init_connect='set autocommit=0'
autocommit
ただし、これはすべてのクライアントでオフに設定されます。
自動コミットオフの場合は、以下のコマンドを確実に使用してください。以下のmy.cnf
ファイルに設定します。
[mysqld]
autocommit=0
復元時に手動で自動コミットをオフに切り替える代わりに、必要なすべてのステートメントをSQLファイルに直接含める方法でMySQLデータを既にダンプできます。
mysqldumpのコマンドラインパラメータはです--no-autocommit
。--opt
復元操作を高速化するために、他のパラメーターの組み合わせを設定するものを追加することも検討してください。
これは、私が使用している完全なmysqldumpコマンドラインの例--no-autocommit
です--opt
。
mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names MyDbName > dump.sql
これらのパラメーターの詳細については、mysqldumpのリファレンスを参照してください。
mysqlのautocommit変数のデフォルト値は1です。mysqlでautocommitの現在の値を表示するには、コマンド mysql> select@@autocommit;を使用します。 次に、自動コミットをオフにする場合は、コマンド mysql> set autocommit=0を使用します。