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

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*