MariaDB(MySQL)でmysqlコマンドから接続時のみautocommitを無効にする
Pocket

MariaDBやMySQLでは、デフォルトでautocommitが有効になっているんだけど、コンソールなどから接続する際にはこれが結構迷惑になる。
通常、データベースなんてアプリケーションなどが利用して、コンソールから操作するって時点でイレギュラー対応の方が多いので、間違えて変な操作すると大変な事になったりする。

Sponsored Links

では、mysqlコマンドから接続した場合に、autocommitを無効にするにはどうすればよいのか?
単純に、コマンドを実行するホストの設定ファイル(通常だと/etc/my.cnf.d/client)に、以下の一行を追記すればよい。

[client]
init-command='set autocommit=0'

それでは、実際に動作を確認してみよう。

20160131_000009

[root@BS-PUB-GFRONT-01 ~]# grep -B 1 'init-command' /etc/my.cnf.d/client.cnf
[client]
#init-command='set autocommit=0'
[root@BS-PUB-GFRONT-01 ~]#
[root@BS-PUB-GFRONT-01 ~]# mysql -u test -ppassword -h 127.0.0.1 -e 'SELECT @@autocommit;'
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
[root@BS-PUB-GFRONT-01 ~]#
[root@BS-PUB-GFRONT-01 ~]# sed -i '/init-command/s/^#//g' /etc/my.cnf.d/client.cnf
[root@BS-PUB-GFRONT-01 ~]# grep -B 1 'init-command' /etc/my.cnf.d/client.cnf
[client]
init-command='set autocommit=0'
[root@BS-PUB-GFRONT-01 ~]#
[root@BS-PUB-GFRONT-01 ~]# mysql -u test -ppassword -h 127.0.0.1 -e 'SELECT @@autocommit;'
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。