MariaDBやMySQLでは、デフォルトでautocommitが有効になっているんだけど、コンソールなどから接続する際にはこれが結構迷惑になる。
通常、データベースなんてアプリケーションなどが利用して、コンソールから操作するって時点でイレギュラー対応の方が多いので、間違えて変な操作すると大変な事になったりする。
では、mysqlコマンドから接続した場合に、autocommitを無効にするにはどうすればよいのか?
単純に、コマンドを実行するホストの設定ファイル(通常だと/etc/my.cnf.d/client)に、以下の一行を追記すればよい。
[client]
init-command='set autocommit=0'
それでは、実際に動作を確認してみよう。
[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 |
+--------------+